我的网址是:
http://localhost:4567/Test/Callback#state=test&access_token=....
但是在致电Request.Url.ToString();
时,它只是输出
http://localhost:4567/Test/Callback
如何将完整的网址发送到服务器?
答案 0 :(得分:7)
你不能。
哈希(#
)和查询字符串(?
)之间存在很大差异。查询字符串发送到服务器,哈希不是。
因此发送到服务器的网址是:http://localhost:4567/Test/Callback
。
您必须获取服务器'hash'的唯一选择是使用查询字符串:
http://localhost:4567/Test/Callback?state=test&access_token=...
答案 1 :(得分:6)
var uri = new Uri("http://localhost:4567/Test/Callback#state=test&access_token=....");
// Contains the query
uri.Fragment
结果:
#state=test&access_token=....
编辑:
要获取网站的当前网址:
Request.Url.AbsoluteUri;
在Request.Url中是当前页面的所有信息,在Request.UrlReffer中是上一页的所有内容。
注意:如果没有先前的请求(来自您的网站),Request.UrlReferrer为空
答案 2 :(得分:1)
其他人已经发布了您特定问题的答案。
但您似乎正在开发ASP.NET网站,因此您应该考虑使用标准?
而不是#
作为查询字符串的前缀。
这将允许您使用内置方法和属性来处理查询字符串,并避免自定义容易出错的字符串处理:
string queryString = Request.Url.Query; // gives you "state=test&access_token=...."
或以NameValueCollection:
的形式访问它string state = Request.QueryString["state"]; // gives you "test"
答案 3 :(得分:0)
var url=@"http://localhost:4567/Test/Callback#state=test";
var uri = new Uri(url);
var result = uri.Fragment;
答案 4 :(得分:0)
您可以使用javascript获取完整链接,然后将其传递给
背后的代码<script language="javascript" type="text/javascript">
function JavaScriptFunction() {
document.getElementById('<%= hdnResultValue.ClientID %>').value = document.URL;
}
</script>
<asp:HiddenField ID="hdnResultValue" Value="0" runat="server" />
<asp:Button ID="Button_Get" runat="server" Text="run" OnClick="Button_Get_Click" OnClientClick="JavaScriptFunction();" />
然后从后面的代码中获取包含当前完整URL
的hiddenfield的值protected void Button_Get_Click(object sender, EventArgs e)
{
string fullURL = hdnResultValue.Value;
string URl = fullURL .Substring(fullURL .IndexOf('#') + 1);
}
祝你好运