我的测试网址为: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/
分享后的地址: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", "");
}