在web.config中设置信任级别

6
我无法通过ASP.NET发送电子邮件,向我的网络主机发送了一封求助邮件,他们告诉我修改安全设置并发送了一个链接:http://forums.asp.net/t/1111145.aspx/1
我已经阅读了链接中的内容,并尝试在web.config中设置<trust level="Full" originUrl="" />,但是我得到了以下错误信息:
This configuration section cannot be used at this path. This happens when the site administrator has locked access to this section using <location allowOverride="false"> from an inherited configuration file.
我没有设置其他web.config文件。
于是我再次询问了网络主机,并问他们是否有一个我不能更改的服务器设置。但是,我得到的回复只有:
You'll need to specify a more specific path.
这很好,但我不知道这意味着什么!
经过更多探索,我想知道是否需要设置单独的trust文件,这是正确的吗?
可以有人指向正确的方向来设置我的Trust级别(我意识到“full”可能也不正确),因为我真的不明白我应该做什么!
2个回答

8
信任级别的相关文档在此处:http://msdn.microsoft.com/en-us/library/ie/wyts434y.aspx。在共享托管中,提供商会锁定这些设置,因此您无法在web.config中更改。如果您向提供商明确要求允许应用程序完全信任,并且他们回答“什么?”那么您正在与一个未受教育的人交谈——要么请求升级,要么更换主机。 “请配置我的应用程序为完全信任”应该足够清楚。请注意,一旦他们理解了您的要求,他们可能不愿意这样做。
此外,我无法确定发送电子邮件是否需要完全信任。发送电子邮件涉及与SMTP服务器通信的能力,通常Web托管只允许访问它们自己的SMTP服务器,并阻止所有其他内容(以防止垃圾邮件)。您将无法说服他们为您例外,但如果您问“请告诉我从我的asp.net应用程序发送电子邮件要使用哪个smtp和端口”,他们应该会告诉您(否则,请升级或更换主机)。事实上,在得出结论信任级别是阻碍邮件发送的原因之前,您应该先要求他们帮助您发送邮件(现在,我非常确定这不是原因)。
此外,请阅读:https://meta.stackexchange.com/questions/66377/what-is-the-xy-problem

谢谢。所以你的意思是他们的回答比我意识到的还要更没有帮助性!关于你提到我应该先问他们如何通过他们的服务器发送邮件的观点...实际上,我已经这样做了!我给他们发了一些示例代码,并被告知可以使用。然后我遇到了问题,这启发我在这里发布。我会再次给他们发送电子邮件,请求更完整的回复。 - Jamie Hartnoll
我很确定我曾经在共享托管中使用部分信任的应用程序发送过邮件。主机不太可能给你完全的信任,因为这会对他们的服务器和其他正在运行的应用程序造成风险;他们会利用这个机会来宣传他们的专用服务器,通常是这样的。使用.NET的类来发送电子邮件(或者至少测试它是否工作),然后再开始使用一些第三方的邮件库(你可以在外面找到示例代码;只需要几行代码和几个web.config更改)。然后,如果发送邮件失败,请在此处粘贴异常信息;我们会想出办法的。 - user191966
1
是的,大多数共享主机不支持完全信任,因此您需要与当前提供商进行检查。但是,如果您确实需要完全信任托管,我可以给出一个名字,HostForLife.eu。您可以在Microsoft网站上找到他们的网站。 :) - user730420
啊!我现在已经解决了,我需要使用端口25。http://www.west-wind.com/weblog/posts/2008/Jan/18/SmtpClient-in-Medium-Trust 他们为什么不能在我最初发送代码给他们检查时就告诉我这个!!:@ - Jamie Hartnoll
是的,它可以!只是希望他们在我开始胡闹之前就提到了这一点!!默认信任级别显然是中等的,使用25号端口一切正常! - Jamie Hartnoll

-4

试试这个:

 public static void ConfirmMail(string emailTo)

{
    try
    {

        MailMessage message = new MailMessage();
        message.Subject = "Account Registration From 91calls";
        message.From = new MailAddress(Convert.ToString("admin@91calls.com"),"Admin");
        message.To.Add(emailTo);
        message.BodyEncoding = System.Text.Encoding.UTF8;
        StringBuilder sb = new StringBuilder();
        sb.Append("<html>");
        sb.Append("<Body>");
        sb.Append("<table cellpadding='0' cellspacing='0' width='100%' border='0'>");
        sb.Append("<tr><td align='center'><table cellpadding='0' cellspacing='0' width='100%' border='0'>");
       // sb.Append("<tr><td align='left'><asp:Image ID='imgLogo' runat='server' ImageUrl='http://supervau.w01.winhost.com/images/logo.png' />");
        sb.Append("</td></tr><tr><td>Hi, <br></td></tr><tr><td align='left'>You are successfylly resgistered with 91 calls.<br>");
        sb.Append("<br>Thank you for using, : http://www.91calls.com<br /><br>For questions or concerns regarding your account, please visit : http://www.91calls.com");
        sb.Append("</td></tr></table></td></tr></table>");
        sb.Append("</Body>");
        sb.Append("</html>");
        message.Body = sb.ToString();
        message.IsBodyHtml = true;
        SmtpClient client = new SmtpClient();
        client.Send(message);


    }
    catch
    {
    }

}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接