从ASP.Net服务器端访问深度链接url
本文关键字:深度 链接 url 访问 服务器端 ASP Net | 更新日期: 2023-09-27 17:59:46
我知道ASP.Net Request.Url无法为我提供SWFAddress生成的深度链接Url。
http://www.mysite.com/Default.aspx#/6/
ASP.Net请求Url仅返回
http://www.mysite.com/Default.aspx
我发现了一个问题,但它已经很老了——SWFAddress深度链接和C#库?
是否有任何库/技术可以从服务器端访问深度链接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返回到服务器。缺点是它会创建两个页面加载。
带有#的URL的一部分是锚点。锚点仅在客户端可见。例如,您需要使用JavaScript处理客户端的锚点,并且可以将您的请求转换为服务器端可读的正确URL。
这不是Asp.Net或C#特有的。这是任何服务器技术的标准行为。
仅引用标准RFC1808:
请注意,片段标识符(及其前面的"#")不被视为URL的一部分
更新:
如果你想从你的swf向服务器发送一些数据,你可以在服务器端编写web服务,然后swf可以与这个web服务通信,这样你就可以发送你喜欢的任何数据。
客户端JavaScript也可以将URL发送到web服务。
编辑:
伙计你已经收到很多请求了:
81个请求❘转移了137亿❘24.10s(有载:2.41s,DOMContentLoaded:2.17s)
,所以我认为用异步请求发送几个字节不会有任何区别。
此外,我不认为你能做什么。锚完全是客户端的事情,它是URL的not部分,要处理它,你需要在客户端处理,也需要在客户端进行处理。你需要从服务器加载你的客户端脚本,故事结束。
Flash中有可用的套接字社区,但这太过分了,你提到你无法访问swf代码。
真的,我看不出有什么理由改变你所拥有的,也没有什么好的选择。
你的问题需要重新定义,然后才能被理解。你的问题不是深度链接。您的问题是本地程序正在为本地工作生成本地值(锚点)。
如果您在服务器端需要这些信息(鉴于我们在表面上的新定义,您似乎不会——本地工作和数据希望是本地的),那么您需要做以下两件事中的一件。
重新定义您的需求和设计,使其不在本地执行这些功能。
实现本地进程和服务器之间的通信,以传递此信息。
基于对这个问题的评论和思考:
通过对您的需求进行以下更改(上面的#1),您可以轻松实现解决方案
而不是使用看起来像这个的链接
http://www.mysite.com/Default.aspx#/6/
使用类似的链接
http://www.mysite.com/Default.aspx/6/
或
http://www.mysite.com/Default.aspx?6/
这些是实际的"深度链接",服务器端将能够看到它们,您的库也将能够处理它们。(基于您链接到的文档的快速扫描。)