SpecifiedPickupDirectory在服务器上的用户查看之前不会创建文件

Hog*_*gan 8 asp.net iis smtp

我正在使用"技巧"(这里很好地描述)在测试期间将我的电子邮件存储在应用程序服务器上.

我的配置文件如下所示:

<system.net>  
    <mailSettings>    
        <smtp deliveryMethod="SpecifiedPickupDirectory" from="no-reply@here.com">      
            <specifiedPickupDirectory pickupDirectoryLocation="E:\EmailStore" />    
        </smtp>  
    </mailSettings>
</system.net>
Run Code Online (Sandbox Code Playgroud)

该目录存在且没有权限问题.

这是问题所在.在我导航到服务器上的文件夹之前,不会创建文件.然后突然爆炸所有文件都弹出到目录中.

任何人都知道发生了什么事吗?

我注意到还有另一种选择 - PickupDirectoryFromIis但我不知道何时应该使用SpecifiedPickupDirectory以及什么时候应该使用PickupDirectoryFromIis.

SpecifiedPickupDirectory和之间有什么区别PickupDirectoryFromIis?我什么时候应该使用另一个?这是导致文件没有出现的原因吗?

Hog*_*gan 7

这是一个从ASP.NET 3.5迁移到ASP.NET 4.0的项目

现在似乎System.Net.Mail.SmtpClient已经实现了IDisposable.更改代码使用以下模式似乎已经解决了问题.

最好的猜测原因是GC没有被调用,文件缓冲区没有被刷新.

using (System.Net.Mail.MailMessage email = new System.Net.Mail.MailMessage())
{
   using (System.Net.Mail.SmtpClient smtp = new System.Net.Mail.SmtpClient())
   {
      // code
   }
}
Run Code Online (Sandbox Code Playgroud)