我怎样才能获得网址的哈希值?

时间:2014-09-30 09:14:42

标签: c# asp.net

我的网址是:

http://localhost:4567/Test/Callback#state=test&access_token=....

但是在致电Request.Url.ToString();时,它只是输出

http://localhost:4567/Test/Callback

如何将完整的网址发送到服务器?

5 个答案:

答案 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

的hi​​ddenfield的值
protected void Button_Get_Click(object sender, EventArgs e)
{
   string fullURL = hdnResultValue.Value;
   string URl = fullURL .Substring(fullURL .IndexOf('#') + 1);
}
祝你好运