使用 Elmah 记录客户端错误
我正在使用 ELMAH 记录我的 .net 错误。它工作得很好,但我想扩展错误日志记录以包括客户端错误,即任意 JavaScript 错误。我可以使用 window.onerror 事件捕获错误,然后调用 .net 处理程序 (.ashx) 在 elmah 中记录错误,但这只是我解决问题的小技巧。有没有更好的方法将客户端错误记录到 elmah?
I'm using ELMAH to log my .net errors. It's working great, but I want to extend the error logging to include client side errors, i.e arbitrary JavaScript errors. I can capture the errors using window.onerror event and then call a .net handler (.ashx) to log the error in elmah, but this is just my little hack to solve the problem. Is there a better way to log client side error to elmah?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
这是一个更完整的解决方案(我想我从 ELMAH 网站上抓取了它......不记得了)
ErrorLogging.js:
布局/母版页:
HomeController.cs:
JavaScriptErrorException.cs:
Here's a more complete solution (I think I grabbed it from the ELMAH site... can't remember)
ErrorLogging.js:
Layout/Master Page:
HomeController.cs:
JavaScriptErrorException.cs:
看看 hoptoadapp.com 以及他们如何进行 JavaScript 报告。
这是完全相同的事情,但后端不同:-)
Take a look at hoptoadapp.com and how they do javascript reporting.
It's the exact same thing, but a different backend :-)
通过处理 window.onerror 事件来捕获所有 javascript 错误,并进行 ajax 调用以在 elmah 中手动记录错误,
当时没有找到更好的解决方案。
Catch all javascript errors by handling the window.onerror event and make ajax call to manually log error in elmah
No better solution was found at the time.
看看这个。
http://joel .net/logging-errors-with-elmah-in-asp.net-mvc-3--part-5--javascript
我必须对上述代码进行的唯一修改涉及捆绑。
我用
...替换为
@Scripts.Render("~/stacktrace.js")
在我的捆绑配置中我添加了这一行...
Bundles.Add(new ScriptBundle("~/stacktrace.js").Include("~/Scripts/stacktrace.js"));
这使得代码与较新的 MVC 4 捆绑兼容。
Take a look at this.
http://joel.net/logging-errors-with-elmah-in-asp.net-mvc-3--part-5--javascript
The only modification I had to make to the above code concerned the bundling.
I replaced
...with
@Scripts.Render("~/stacktrace.js")
And in my bundle config I added the line...
bundles.Add(new ScriptBundle("~/stacktrace.js").Include("~/Scripts/stacktrace.js"));
This makes the code compatible with the newer MVC 4 bundling.