我的测试网址为:http://abc.xxxxxxxxxx.com 在地址栏也是这样显示的。但是实际上我后台用了 Request.Url.ToString().Split('#')[0]; 结果是:http://abc.xxxxxxxxxx.com/default.aspx我根据官方的说法,试着将URL 写死一次试试:http://abc.xxxxxxxxxx.com/结果通过了。我这下才真正的明白,参与生成签名的URL的真面目了,是获取地址栏的URL。那为什么要动态获取吗?原因是当你把要分享的页面分享出去的时候,微信会在地址栏上加上一些参数。如果写死,当朋友点击你分享的链接时也想分享的话,这时又会出现签名错误了。请注意,这里所说的加上了参数,发生的时间点。
总结:
在.net 中没有直接获取地址栏信息的方法。
Request.ApplicationPath: /testweb
Request.CurrentExecutionFilePath: /testweb/default.aspx
Request.FilePath: /testweb/default.aspx
Request.Path: /testweb/default.aspx
Request.RawUrl: /testweb/default.aspx
Request.Url.AbsolutePath: /testweb/default.aspx
Request.Url.AbsoluteUrl: http://www.test.com/testweb/default.aspx
Request.Url.Host: www.test.com
Request.Url.LocalPath: /testweb/default.aspx
如果你的网址是: http://abc.xxxxxxxxxx.com/
我的处理方法是这样的,有点笨,但好用:
url = Request.Url.ToString().Split('#')[0];
if (url == "http://abc.xxxxxxxxxx.com/default.aspx")
{
url = "http://abc.xxxxxxxxxx.com/";
}
else
{
url = url.Replace("default.aspx", "");
}