Asp联系页面在本地工作,但不在服务器上

本文关键字:服务器 工作 联系 Asp | 更新日期: 2023-09-27 18:10:20

我有一个asp网站和asp的联系方式,我在网上找到的。它在本地机器上运行良好。

我将它添加到我的服务器上进行实时测试,但它不起作用。我得到了显示错误的显示消息,它是这样说的:

System.Security。SecurityException:请求类型的权限"System.Net.Mail。SmtpPermission, System, Version=4.0.0.0,文化=中性,PublicKeyToken=b77a5c561934e089'失败。在System.Security.CodeAccessSecurityEngine。检查(对象的需求,StackCrawlMark&stackMark, Boolean isPermSet) atSystem.Security.CodeAccessSecurityEngine.Check (CodeAccessPermission帽,StackCrawlMark&stackMark)System.Security.CodeAccessPermission.Demand ()System.Net.Mail.SmtpClient.Initialize ()System.Net.Mail.SmtpClient . .(字符串主机,Int32端口)接触。btnSubmit_Click(对象发送方,EventArgs e) ing:'pleskvhosts'myweburl'httpdocs'contact.aspx.cs:第33行第一个失败的权限类型是System.Net.Mail.SmtpPermission程序集的区域失败是:MyComputer

有人知道这是什么意思吗?

contact.aspx.cs的代码是

protected void btnSubmit_Click(object sender, EventArgs e)
{
    try
    {
        MailMessage mailMsg = new MailMessage();
        mailMsg.From = new MailAddress(TheirEmail.Text);
        mailMsg.To.Add("myemailaddress@gmail.com");
        mailMsg.IsBodyHtml = true;
        mailMsg.Subject = "Contact Question!";
        mailMsg.Body = "Contact Details" + "<b>Name:</b>" + TheirName.Text + " <br/> <b>Email - address :</b>" + TheirEmail.Text + "<br/> <b>Comments :</b>" + Comments.Text;
        SmtpClient smtp = new SmtpClient("smtp.gmail.com", 587);
        mailMsg.Priority = MailPriority.Normal;
        smtp.Credentials = new System.Net.NetworkCredential("myemailaddress@gmail.com", "mypassword");
        smtp.Timeout = 25000;
        smtp.EnableSsl = true;
        smtp.Send(mailMsg);
        TheirEmail.Text = "";
        TheirName.Text = "";
        Comments.Text = "";

        DisplayMessage.Text = "Thank you. Your contact details and feed back has been submitted.";
        DisplayMessage.Visible = true;
    }
    catch (Exception ex)
    {
        DisplayMessage.Text = ex.ToString();
        DisplayMessage.Visible = true;
    }

Asp联系页面在本地工作,但不在服务器上

确保 Web.Config 文件将 trust level 设置为 full :

<configuration>
  <system.web>
    .....
    <trust level="Full" originUrl=""/>
  </system.web>
</configuration>

例如,如果您使用的是GoDaddy,则必须在 System.Net.Mail.SmtpClient 变量(例如*smtp *)中设置以下内容:

SmtpClient smtp = new SmtpClient("relay-hosting.secureserver.net", 25);
smtp.EnableSsl = false; // check if your ISP supports SSL

您还需要按照此页面在这里正确配置GoDaddy上的电子邮件。

在某些情况下,如果您不能实现full trust,使用较低的安全级别将不允许您指定SMTP端口。您的ISP指定端口80,但有时您可以使用默认端口 25,如果80不工作

这样做.....

mm.IsBodyHtml = false;
SmtpClient smtp = new SmtpClient();
smtp.Host = relay-hosting.secureserver.net;
smtp.EnableSsl = false;