我在测试过程中使用了一个“技巧”(很好地描述了here)将我的电子邮件存储在应用程序服务器上。
我的配置文件如下所示:
<system.net>
<mailSettings>
<smtp deliveryMethod="SpecifiedPickupDirectory" from="no-reply@here.com">
<specifiedPickupDirectory pickupDirectoryLocation="E:\EmailStore" />
</smtp>
</mailSettings>
</system.net>
该目录存在,并且没有权限问题。
这是问题所在。在我导航到服务器上的文件夹之前,将不会创建文件。然后突然 bang 所有文件都弹出到目录中。
任何人都知道发生了什么事吗?
我注意到还有另一种选择-
PickupDirectoryFromIis
-但我不清楚何时应使用SpecifiedPickupDirectory
和何时应使用PickupDirectoryFromIis
。SpecifiedPickupDirectory
和PickupDirectoryFromIis
有什么区别?我什么时候应该在另一个上使用?这是导致文件在我导航之前不出现的原因吗?
最佳答案
这是一个从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
}
}
关于asp.net - SpecifiedPickupDirectory在服务器上的用户查看之前不会创建文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8421330/