【问题标题】:Accessing deep linking url from ASP.Net Server Side从 ASP.Net 服务器端访问深度链接 url
【发布时间】:2013-02-15 15:48:46
【问题描述】:

我知道 ASP.Net Request.Url 不能给我由 SWFAddress 生成的deep linking 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 返回服务器。缺点是它会创建两个页面加载。

【问题讨论】:

  • 可能是一个愚蠢的问题,但您是否尝试过查看 AbsoluteUrl 属性?

标签: c# asp.net .net swfaddress


【解决方案1】:

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

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

只是引用标准RFC1808

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

更新

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

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

编辑:

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

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

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

除此之外,我认为您无能为力。 Anchor 完全是客户端的东西,它是 URL 的 NOT 的一部分,并且要处理它您需要在客户端处理并在客户端处理您需要从服务器加载您的客户端脚本, 故事结局。

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

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

【讨论】:

  • 感谢您的评论。我对此很清楚;我的问题是如何解决它。
  • 是的,我的应用程序目前正在像使用 ajax 一样工作。但我不喜欢在初始请求时触发两个页面加载。
  • 您不应触发 2 个页面加载。您需要加载页面并将您的数据发送到具有异步请求的 Web 服务。此请求可以在页面加载后触发,实际上您不需要来自服务器的任何响应。
【解决方案2】:

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

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

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

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

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


根据评论和思考这个问题:

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

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

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

使用类似这样的链接

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

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

这些是实际的“深层链接”,服务器端可以看到它们,您的库也可以处理它们。 (基于对您链接到的文档的快速浏览。)

【讨论】:

  • 感谢您的评论。 SWF 地址将其称为深度链接。我不知道是对是错。 asual.com/swfaddress
  • FlippingBook 是第三方应用程序,它与 SWFAddress 的深层链接网址紧密同步(您可以在我的问题中看到演示链接)。我目前的解决方案是在客户端解析 url,然后使用 ajax 返回服务器。但我不喜欢在初始请求时触发两个页面加载。谢谢你的提示。
猜你喜欢
  • 2017-05-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多