簡體   English   中英

新的MailMessage()引發“句柄無效”

[英]new MailMessage() Throws 'The handle is invalid'

為什么這樣的代碼:

MailMessage mm = new MailMessage();

拋出此異常:

System.Security.Cryptography.CryptographicException was caught
Message=The handle is invalid.

Source=mscorlib
StackTrace:
   at System.Security.SecureString.ProtectMemory()
   at System.Security.SecureString.InitializeSecureString(Char* value, Int32 length)
   at System.Security.SecureString..ctor(Char* value, Int32 length)
   at System.Net.UnsafeNclNativeMethods.SecureStringHelper.CreateSecureString(String plainString)
   at System.Net.Configuration.SmtpNetworkElementInternal..ctor(SmtpNetworkElement element)
   at System.Net.Configuration.SmtpSectionInternal..ctor(SmtpSection section)
   at System.Net.Configuration.SmtpSectionInternal.GetSection()
   at System.Net.Mail.SmtpClient.get_MailConfiguration()
   at System.Net.Mail.MailMessage..ctor()
   at csEmail.GetMailMessage(String subject, String htmlbody) in c:\Users\Greg\My Dropbox\Intern Files\mobiledesign\App_Code\Utilities.cs:line 364
InnerException: 

我的Web.config

<smtp deliveryMethod="Network" from="correctAddress">
    <network host="smtp.gmail.com" userName="correctAddress" password="correctPassword" enableSsl="true" port="587"/>
</smtp>

我相信實例化MailMessage不會從Web.config中讀取。 SmtpClient讀取在web.config中設置的SMTP。

您可以顯示更多代碼嗎? 也許其余的GetMailMessage方法。

為什么會扔呢? 可能是因為MS在后台進行了一些愚蠢的事情。

IIRC,該SecureString代碼實際上是對advapi32.dll的互操作調用。

我的膝蓋跳動反應是:

  1. 禁用任何防病毒軟件,然后查看是否可以解決該問題。

  2. 確保您有權訪問該dll。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM