- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我正在尝试找出如何从 MVC 中的 Application_Error 方法创建异步调用。
我有一个我编写的电子邮件 dll,它使用 Smtp 客户端通过异步调用发送电子邮件。
问题是,当我在我的 dll 中调用 SendEmail 方法时,我有需要等待调用的冲突。现在,如果我尝试这样的事情:
protected async void Application_Error()
{
var await emailService.SendEmail("Hello World");
}
它不会工作,甚至永远不会调用该方法。
有没有办法让我从同步方法进行异步调用?我的在线研究暗示 HttpServerUtility.TransferRequest
可能是答案,但我无法弄清楚如何让它与我的请求一起工作,目前它对我来说没有意义。
最佳答案
对于那些将来可能会遇到此问题的人,这里是另一个可能更强大的解决方案。您可以使用 HostingEnvironment.QueueBackgroundWorkItem()
而不是使用 ThreadPool.QueueUserWorkItem()
。以这种方式做事,要求服务器在关闭之前付出更多的努力来完成这些任务。
这是最近项目的一个例子:
void Application_Error(object sender, EventArgs e)
{
Exception ex = Server.GetLastError();
HostingEnvironment.QueueBackgroundWorkItem(ct =>
ExceptionLogger.LogAsync(ex));
}
关于c# - 来自 Application_Error() 的异步调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35039235/
在 Webform1.aspx.cs 中: protected void Page_Load(object sender, EventArgs e) { throw new Exception
如果 URL 存在,我有一些代码可以显示按钮: try { string dashboardURL = Config.RootUrl + "/Dashboard/Default.aspx";
我的 Global.asax 文件中有以下代码: protected void Application_Error() { var exception = Server.GetLastErro
我正在尝试运行一个将异常记录到数据库的 ASP.NET 应用程序。我正在使用 Application_Error 来捕获异常。 在添加连接字符串之前,只是为了测试我的代码(Logger 类和 Glob
我使用 Application_Error 来处理 ASP.NET MVC 3 应用程序中的错误。今天我注意到,对于一个特定的错误情况,此方法被调用了两次:请求带有前导下划线的资源时,例如_ViewS
最近我们开始发现一个问题,即在与处理请求的线程不同的线程上调用 Application_Error 事件处理程序(对于 HttpApplication.Error )。 我们最近改变的事情: 32 位
Application_Error 未在生产服务器上触发。但它在我们的本地服务器和其他亚马逊服务器上工作。我们的本地服务器有Windows7操作系统和IIS(7.5)版本,但生产服务器有Windows
所以我有一个全局错误处理程序,它会在我的应用程序出现错误时发送电子邮件。这很好用,但是,有一些错误(即可怕的“对象引用未设置到对象的实例”错误)极难追踪。我有一个简洁的函数,可以为我将序列化模型转换为
我正在尝试进行重定向,我有一个单例类,它是我的配置类,获取关于它的信息并使用我的连接字符串,这些数据我保存在一个加密文件中,我正在使用 session-per-请求,然后在安装之前我需要检查 sess
我必须在 Application_Error 处理程序中进行异步调用。所以我用 async 关键字定义了这个处理程序,但它不会在异常时触发。 protected async void Appl
如何从 Application_Error 重定向到另一个页面? 目前我在做 Response.Redirect("~/Account/LogOn"); 但我想做一些类似RedirectToActio
在过去的 2 周里,我遇到了一个我无法解决的案例,也许你们已经解决了同样的问题或者听说过/阅读过它并且可以帮助我。 我有一个在我的机器和其他机器上运行的 ASP.NET 项目,每次我尝试调节 Quer
我有一个名为 LogErrorAttribute 的全局异常过滤器: public class LogErrorAttribute : IExceptionFilter { private I
我正在尝试找出如何从 MVC 中的 Application_Error 方法创建异步调用。 我有一个我编写的电子邮件 dll,它使用 Smtp 客户端通过异步调用发送电子邮件。 问题是,当我在我的 d
我有一个 Asp.Net 4.0 Web Forms 应用程序在某些时候抛出以下错误 “Server Error in ‘/MySiteDev’ Application” . 这个错误只是偶尔出现。此
在 VS2010 SP1 中调试我的 MVC 4 应用程序时,Application_Error()处理程序被调用,但 Server.GetLastError()为空。 protected void
我使用 Application_Error 处理程序来记录所有未处理的异常;一般来说,它运行良好,但总是会跳过 404 错误。有什么想法可能是什么原因吗? 最佳答案 实际上,这是因为您的网络服务器返回
我想在全局范围内捕获这些类型的错误,以便我可以将它们记录到数据库中并向用户显示一条友好的消息:500、403 和 404。我正在使用 Log4Net 处理错误。 void Application_Er
我试图找到一个在所有 Application_Error 事件处理程序之后立即触发的事件,以便我可以修改发送的响应(弄乱状态代码和“位置” header 并创建一个新的正文)使用自定义 HttpMod
我正在尝试在我的 MVC 应用程序中实现全局错误处理。 我的 Application_Error 中有一些逻辑重定向到 ErrorController 但它不起作用。 我在 Global.aspx 的
我是一名优秀的程序员,十分优秀!