在具有不同根相对路径的代理后面运行ASP.NET MVC应用程序

我在代理后面运行的ASP.NET MVC应用程序中遇到问题。

我们的IIS应用程序根路径例如是http:// server / MyApp /

意味着所有使用应用程序根目录的URL(“〜/”,Url.Action(“MyAction”,“MyController”))都被解析为“/ MyApp”

现在我们在代理服务器后面运行,它转发所有请求,但要求您通过以下URL访问应用程序:“/ Secury / Proxy / RubbishUrl / MyApp”

因为代理URL仅在客户端上可用,所以我想到创建一个带有路径前缀的cookie,并在服务器上的每个生成的URL之前插入它。

现在的问题是,代码中修改每个已解析/发送到客户端的URL(资源,控制器操作,图像等)的最佳位置是什么?

应用程序中的每个路径都使用MVC方法(Url.Content,Url.Action等)解析。

更新:不再主动寻找答案(尽管仍然对正确的解决方案感兴趣)

大多数情况下,代理会进行自己的URL转换,但在这种情况下,代理服务器会忽略以JSON格式传输的路径,并对它们进行处理。

我现在的’解决方案’就是不在JSON中传递路径,而是:

  • 在JSON请求中使用正确的ID和值
  • 在HTML中的URL中创建模板(已正确解析),
  • 使用JSON请求中的值替换URL模板中的ID和值

这种方法实际上是一种非常“清洁”的方式IMO然后传递URL。

您可以创建自己的asp.net mvc控制器工厂,根据请求的URL确定哪个控制器和操作将响应。 查看此url以获取有关如何执行此操作的好博客文章 – http://nayyeri.net/custom-controller-factory-in-asp-net-mvc