0

我知道 ASP.Net Request.Url 不能给我由 SWFAddress 生成的深层链接url。

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: ""

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

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

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

4

2 回答 2

0

不,这不是深度链接。你说的是本地主播。完全不同的东西。

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

如果您在服务器端需要这些信息(并且从表面上看我们的新定义,您似乎不需要——本地工作和数据预计是本地的),那么您需要做两件事之一。

  1. 重新定义您的要求和设计,使其不在本地执行这些功能。

  2. 在本地进程和您的服务器之间实现通信以传达此信息。


基于评论和思考这个问题:

您可以通过对您的要求进行以下更改(上面的#1)轻松实施解决方案

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

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

使用如下所示的链接

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

或者

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

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

于 2013-02-15T16:24:41.730 回答
0

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

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

仅引用标准RFC1808

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

更新

如果你想从你的 swf 发送一些数据到服务器你可以在服务器端编写 web 服务,然后 swf 可以与这个 web 服务通信,所以你可以发送任何你喜欢的数据。

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

编辑:

伙伴 你已经收到了很多请求:

81 个请求 ❘ 传输 1.37MB ❘ 24.10 秒(加载:2.41 秒,DOMContentLoaded:2.17 秒)

,所以我认为用异步请求发送几个字节不会有任何区别。

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

Flash 中有可用的套接字通信,但它过头了,您提到您无权访问 swf 代码。

真的,我看不出有什么理由改变你所拥有的,也没有好的选择。

于 2013-02-15T15:58:35.703 回答