相关疑难解决方法(0)

发送异步电子邮件

我正在使用ASP.NET MVC 3和MVCMailer,我尝试使用SendAsync发送电子邮件,但实际上它还需要更长的时间.

所以我试图像下面的代码一样使用Task.Factory:

   var task1 = Task.Factory.StartNew(
            state =>
            {
                var mail = new UserMailer();
                var msg = mail.Welcome("My Name", "myemail@gmail.com");
                msg.SendAsync(); 
            });

   task1.Wait();
Run Code Online (Sandbox Code Playgroud)

问题是,MVCMailer需要HttpContext,但在这个任务中我得到了HttpContext Null.

如何发送Async电子邮件?

c# asp.net-mvc mvcmailer

10
推荐指数
1
解决办法
5298
查看次数

在MVC Action中启动和忘记异步任务

我有一个标准的,非异步的动作,如:

[HttpPost]
public JsonResult StartGeneratePdf(int id)
{
    PdfGenerator.Current.GenerateAsync(id);
    return Json(null);
}
Run Code Online (Sandbox Code Playgroud)

这个想法是我知道这个PDF生成可能需要很长时间,所以我只是启动任务并返回,而不是关心异步操作的结果.

在默认的ASP.Net MVC 4应用程序中,这给了我这个很好的例外:

System.InvalidOperationException:此时无法启动异步操作.异步操作只能在异步处理程序或模块中启动,或者在页面生命周期中的某些事件中启动.如果在执行页面时发生此异常,请确保将页面标记为<%@ Page Async ="true"%>.

哪种与我的场景无关.调查它我可以将标志设置为false以防止此异常:

<appSettings>
    <!-- Allows throwaway async operations from MVC Controller actions -->
    <add key="aspnet:AllowAsyncDuringSyncStages" value="true" />
</appSettings>
Run Code Online (Sandbox Code Playgroud)

/sf/answers/1066168141/
http://msdn.microsoft.com/en-us/library/hh975440.aspx

但问题是,通过启动这个异步操作并从同步MVC控制器动作中忘记它有什么危害吗?我能找到的一切都建议让控制器异步,但这不是我想要的 - 没有意义,因为它应该总是立即返回.

asp.net asynchronous invalidoperationexception synchronous controller-action

7
推荐指数
1
解决办法
5025
查看次数

MvcMailer SendAsync是否阻止ASP.NET MVC请求?

有谁知道SmtpClientWrapper中的MvcMailer SendAsync方法是否阻止ASP.NET MVC请求?看看MvcMailer维基和代码,我会说是的.

所以,我仍然需要使用像WebBackgrounder作为disussed 这里在我的MVC应用程序安全和真正的异步发送邮件?

我正在寻找一个明确的答案谢谢.

asp.net-mvc mvcmailer

5
推荐指数
1
解决办法
1050
查看次数

从 Windows 应用程序使用 amazon ses 发送电子邮件时对 SSPI 的调用失败

我正在使用 amazon ses 发送电子邮件,并且在网站和 Windows 应用程序中使用相同的配置。
该网站正常发送电子邮件,但 Windows 应用程序给我这个错误,而不是发送电子邮件:在此输入图像描述

请注意,当我将Windows应用程序中的smtp配置更改为gmail之类的东西时,它工作正常,问题仅发生在亚马逊ses上,并且就在今天开始发生,之前ses在Windows应用程序上运行良好。
另请注意,网站和 Windows 应用程序现在都可以在本地运行。

堆栈跟踪:

   at System.Net.Security.SslState.StartSendAuthResetSignal(ProtocolToken message, AsyncProtocolRequest asyncRequest, Exception exception)
   at System.Net.Security.SslState.CheckCompletionBeforeNextReceive(ProtocolToken message, AsyncProtocolRequest asyncRequest)
   at System.Net.Security.SslState.StartSendBlob(Byte[] incoming, Int32 count, AsyncProtocolRequest asyncRequest)
   at System.Net.Security.SslState.ProcessReceivedBlob(Byte[] buffer, Int32 count, AsyncProtocolRequest asyncRequest)
   at System.Net.Security.SslState.StartReadFrame(Byte[] buffer, Int32 readBytes, AsyncProtocolRequest asyncRequest)
   at System.Net.Security.SslState.StartReceiveBlob(Byte[] buffer, AsyncProtocolRequest asyncRequest)
   at System.Net.Security.SslState.CheckCompletionBeforeNextReceive(ProtocolToken message, AsyncProtocolRequest asyncRequest)
   at System.Net.Security.SslState.StartSendBlob(Byte[] incoming, Int32 count, AsyncProtocolRequest asyncRequest)
   at System.Net.Security.SslState.ForceAuthentication(Boolean receiveFirst, Byte[] buffer, AsyncProtocolRequest asyncRequest)
   at System.Net.Security.SslState.ProcessAuthentication(LazyAsyncResult lazyResult)
   at System.Net.TlsStream.CallProcessAuthentication(Object state)
   at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, …
Run Code Online (Sandbox Code Playgroud)

c# asp.net security smtp amazon-ses

4
推荐指数
1
解决办法
4127
查看次数