我的測試網(wǎng)址為:http://abc.xxxxxxxxxx.com 在地址欄也是這樣顯示的。但是實際上我后臺用了 Request.Url.ToString().Split('#')[0]; 結(jié)果是:http://abc.xxxxxxxxxx.com/default.aspx我根據(jù)官方的說法,試著將URL 寫死一次試試:http://abc.xxxxxxxxxx.com/結(jié)果通過了。我這下才真正的明白,參與生成簽名的URL的真面目了,是獲取地址欄的URL。那為什么要動態(tài)獲取嗎?原因是當(dāng)你把要分享的頁面分享出去的時候,微信會在地址欄上加上一些參數(shù)。如果寫死,當(dāng)朋友點擊你分享的鏈接時也想分享的話,這時又會出現(xiàn)簽名錯誤了。請注意,這里所說的加上了參數(shù),發(fā)生的時間點。
總結(jié):
在.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
如果你的網(wǎng)址是: 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", "");
}