如何在 Global.asax 中获取 Angular 视图的完整 url

How to obtain the full url of an Angular view in Global.asax

在 ASP.NET MVC 应用程序中,Request.Url 访问 Global.asax 中的 url。

但是对于 Angular 应用程序,其中 url 类似于 http://domain/#/home。我们从Application_BeginRequestApplication_EndRequest得到的Request.Urlhttp://domain/。 Angular 条路线不包括在内。

这是合理的,因为这些路由是在客户端添加的。但是有没有可能在MVC服务器端得到真正的url的值呢?


更新:

刚选出 Matteo 的正确答案。让我澄清一下。

我一直在尝试这样做是为了一个目的:重写我的 url.

过去,我常常使用字符串函数或内置工具 VirtualPathUtility.

检查 Request.ApplicationPath 和操作 url

对散列部分的需求是有效的,因为查询字符串参数附加在那里。例如,我有一个 url 这样的:

http://[domain]/#/pay/cancel?paymentId=[some guid]

传统智慧让我Global.asax访问那些查询参数。我找到 none。散列标签后面的所有内容都可以方便地忽略。

所以正确的方法是在客户端代码中处理 url 的那部分。我正在使用 ui-router。所以对于 url rewrite/redirect,使用 stateProvider.when(oldUrl, newUrl);。要访问查询参数,请使用 $state.params.

经验教训:清晰地思考并以不同的心态处理不同的问题。

没有办法,因为 url 的 "hash" 部分并不是 url 的真正部分。您是否曾经在页面中使用过锚点来创建索引?概念是一样的。

无论如何,我无法想象哈希部分如何在服务器端发挥作用。我的猜测是您认为它很有用,因为您正在以错误的方式解决问题。

如果您用更多细节补充您的问题,例如您想要实现的目标,我们很可能会为您提供合适的解决方案。