我有一个“注册用户”.aspx
页面。
我想将此页面链接发送到电子邮件帐户,用户强制点击此链接进入此页面。
我使用"Request.UrlReferrer"
获取url
页面的电子邮件帐户.aspx
以验证用户,但"Request.UrlReferrer"
无法返回电子邮件帐户url
且其值为null
我的页面加载代码:
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
string previousPageUrl = Request.UrlReferrer.ToString();
string thisPageUrl = Request.Url.ToString();
if (previousPageUrl == Request.UrlReferrer.ToString() || thisPageUrl == Request.UrlReferrer.ToString())
{
my coads
}
}
但是:
string previousPageUrl = Request.UrlReferrer.ToString();
有例外
答案 0 :(得分:1)
你不能。 Webmail是通过HTTPS访问的,它隐藏了引荐来源,我认为用户的邮件地址无论如何都在Webmail URL中(例如https://www.gmail.com/inbox/mailid)。
只需在您在邮件中发送的网址中使用标识符,因此点击后,您可以将链接与您网站上的用户相关联。
答案 1 :(得分:0)
首选注册后,将激活码发送到用户的电子邮件中
您的用户表格中应该有ActivationCode
列,以获取更多详细信息Here。
但基于你的问题:
1-您无法访问previousPageUrl
,因为它首先在阻止
2-如果您在没有按下链接的情况下打开浏览器,那么您将获得null Exception
。
试试这个:
if (!Page.IsPostBack)
{
try
{
string previousPageUrl = Request.UrlReferrer.ToString();
string thisPageUrl = Request.Url.ToString();
if (previousPageUrl == Request.UrlReferrer.ToString() || thisPageUrl == Request.UrlReferrer.ToString())
{
}
}
catch(NullReferenceException exception)
{
//Log exception
}
}
或者这更好:
if (!Page.IsPostBack)
{
if (Request.UrlReferrer != null)
{
string previousPageUrl = Request.UrlReferrer.ToString();
string thisPageUrl = Request.Url.ToString();
if (previousPageUrl == Request.UrlReferrer.ToString() || thisPageUrl == Request.UrlReferrer.ToString())
{
}
}
}