从ASP.Net Server Side访问深层链接URL

时间:2013-02-15 15:48:46

标签: c# asp.net .net swfaddress

我知道ASP.Net Request.Url无法为我提供由SWFAddress生成的deep linking网址。

http://www.mysite.com/Default.aspx#/6/

ASP.Net Request.Url只返回

http://www.mysite.com/Default.aspx

我发现了一个问题,但它已经很老了 - SWFAddress Deeplinks and C# library?

是否有任何库/技术可以从服务器端访问深层链接URL?

谢谢!

更新:以下是我访问/Default.aspx#/6 /

时的内容
? Request.Url
{http://localhost:56476/Default.aspx}
    AbsolutePath: "/Default.aspx"
    AbsoluteUri: "http://localhost:56476/Default.aspx"
    Authority: "localhost:56476"
    DnsSafeHost: "localhost"
    Fragment: ""
    Host: "localhost"
    HostNameType: Dns
    IsAbsoluteUri: true
    IsDefaultPort: false
    IsFile: false
    IsLoopback: true
    IsUnc: false
    LocalPath: "/Default.aspx"
    OriginalString: "http://localhost:56476/Default.aspx"
    PathAndQuery: "/Default.aspx"
    Port: 56476
    Query: ""
    Scheme: "http"
    Segments: {string[2]}
    UserEscaped: false
    UserInfo: ""

更新:对不起,我没有说清楚我的问题。如果用户浏览以下网址(很可能保存在收藏夹中),我想从服务器端检索完整的网址。你可以去那个网址;这是一个真正的应用程序。

http://publ.com/Kgd3A5y#/13/zoomed

我当前的解决方案:我在客户端订阅了一个事件(比如说页面加载)。我在客户端解析url,然后使用ajax返回服务器。缺点是它会产生两个页面加载。

2 个答案:

答案 0 :(得分:0)

带#的部分网址是锚。锚点仅在客户端可见。您需要使用例如JavaScript来处理客户端上的锚点,并且您可以将您的请求转换为服务器端可读的正确URL。

这不是Asp.Net或C#特有的。它是任何服务器技术的标准行为。

引用标准RFC1808

  

请注意,片段标识符(以及它之前的“#”)不会被视为网址的一部分。

<强>更新

如果您想将某些数据从您的swf发送到服务器您可以在服务器端编写Web服务,然后swf可以与此Web服务进行通信,因此您可以发送您喜欢的任何数据。

客户端JavaScript也可以将URL发送到Web服务。

修改

Mate你已经收到了很多要求:

  

81个请求| 1.37MB转移| 24.10s(onload:2.41s,   DOMContentLoaded:2.17s)

,所以使用异步请求发送少量字节不会产生任何影响。

此外,我不认为你可以做很多事情。 Anchor完全是客户端的东西,它是 NOT URL的一部分,并且要处理它你需要在客户端进行处理并在客户端进行处理你需要从服务器加载你的客户端脚本, 故事结局。

Flash中有套接字语音可用,但它过分了,你提到你无法访问swf代码。

真的,我认为没有理由改变你的东西,也没有其他好的选择。

答案 1 :(得分:0)

不,这不是深层次的联系。你在谈论当地的锚点。完全不同的东西。

您的问题需要重新定义,然后才能理解。你的问题不是深层链接。您的问题是本地程序正在为本地工作生成本地值(锚)。

如果您需要在服务器端获取此信息(并且表面上给出了我们的新定义,您似乎不会 - 本地工作和数据希望是本地的),那么您需要做两件事之一。 / p>

  1. 重新定义您的要求并设计为不在本地执行这些功能。

  2. 实施本地进程与服务器之间的通信以传达此信息。


  3. 根据评论和对此问题的思考:

    您可以轻松实施解决方案,并根据您的要求进行以下更改(上面的#1)

    而不是使用看起来像这样的链接

    http://www.mysite.com/Default.aspx#/6/
    

    使用看起来像这样的链接

    http://www.mysite.com/Default.aspx/6/
    

    http://www.mysite.com/Default.aspx?6/
    

    这些是实际的“深层链接”,服务器端将能够看到它们,您的库也将能够处理它们。 (基于您链接到的文档的快速扫描。)