Skip to main content
 首页 » 编程设计

c#之非静态字段、方法或属性需要对象引用 'System.Web.UI.Page.Request.get'

2024年01月26日30wayfarer

我正在使用网络应用程序。我在编译时发现错误。此错误发生于此代码:

public static void SendRegistrationEmail(string name, string ref_no, string email) 
    { 
        MailMessage msg = new MailMessage(); 
        msg.IsBodyHtml = true; 
        SmtpClient client = GetSmtpClient(); 
        string fromEmailAddress = ConfigurationManager.AppSettings["EASYTRACK_FromEmailAddress"]; 
        string appPath = ConfigurationManager.AppSettings["EASYTRACK_PathToApplication"]; 
        string subject = "EASYTRACK | User Registration"; 
        string body = "<html><body>Thank you " + name + " !" + 
                    " for registering your details with Easy Track.<br/><br/>" + 
                    "Please click the following link to activate your account" + 
                    "<br /><a href = '" + Request.Url.AbsoluteUri.Replace("Register.aspx", appPath + "My_Account.aspx?Ref=" + ref_no) + "'>Click here to activate your account.</a><br/><br/>" + 
                    "Thanks & Regards From Easy Track Team<br/></br></br><b>Note:</b>Your Account is activated after clicking this link.</body></html>"; 
        msg.From = new MailAddress(fromEmailAddress); 
        msg.To.Add(new MailAddress(email)); 
        msg.Subject = subject; 
        msg.Body = body; 
        client.Send(msg); 
    } 

此处 Request.Url.AbsoluteUri 发生错误,我无法在 Page_Load 获得此请求。那是什么问题???

请您参考如下方法:

Page 类实例具有 Request 属性,因此您可以轻松地使用它。

http://msdn.microsoft.com/en-us/library/system.web.ui.page.request%28v=vs.110%29.aspx

相反,您的代码是静态方法,无法访问 Request 属性,因为静态方法无法访问实例成员。

使用 HttpContext.Current.Request.Url 代替 of Request.Url 使您的代码更通用。