我在一个运行在代理后面的ASP.NET MVC应用程序中遇到了路径问题。
我们的IIS应用程序根路径是例如http://server/MyApp/,这意味着使用应用程序根目录(“〜/”,Url.Action(“MyAction”,“MyController”))的所有URL都解析为“/MyApp”。
现在,我们正在代理服务器后面运行,代理服务器转发所有请求,但需要通过以下URL访问应用程序:“/Secury/Proxy/RubbishUrl/MyApp”。
因为代理URL仅在客户端上可用,所以我想创建一个带有路径前缀的cookie,并在每个生成的URL之前插入它。
现在的问题是,在代码中修改每个已解析/发送到客户端的URL(资源、控制器操作、图像等),最佳位置是什么?
应用程序中的每个路径都是使用MVC方法(Url.Content、Url.Action等)解析的。
更新:不再积极寻找答案(虽然仍然对正确的解决方案感兴趣)
大多数情况下,代理会执行自己的URL转换,但在这种情况下,代理服务器忽略在JSON中传输的路径,并且它们被处理。
我们的IIS应用程序根路径是例如http://server/MyApp/,这意味着使用应用程序根目录(“〜/”,Url.Action(“MyAction”,“MyController”))的所有URL都解析为“/MyApp”。
现在,我们正在代理服务器后面运行,代理服务器转发所有请求,但需要通过以下URL访问应用程序:“/Secury/Proxy/RubbishUrl/MyApp”。
因为代理URL仅在客户端上可用,所以我想创建一个带有路径前缀的cookie,并在每个生成的URL之前插入它。
现在的问题是,在代码中修改每个已解析/发送到客户端的URL(资源、控制器操作、图像等),最佳位置是什么?
应用程序中的每个路径都是使用MVC方法(Url.Content、Url.Action等)解析的。
更新:不再积极寻找答案(虽然仍然对正确的解决方案感兴趣)
大多数情况下,代理会执行自己的URL转换,但在这种情况下,代理服务器忽略在JSON中传输的路径,并且它们被处理。
我现在的“解决方案”只是不在JSON中传递路径,而是:
- 在JSON请求中使用正确的ID和值
- 在HTML中创建模板URL(这些URL将被正确解析)
- 用JSON请求中的值替换URL模板中的ID和值
在我看来,这种方法比传递URL更加“清晰”。