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

时间:2010-04-07 10:08:04

标签: c# asp.net-mvc proxy relative-path

我遇到了在代理服务器后面运行的ASP.NET MVC应用程序中的路径问题。

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

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

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

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

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

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

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

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

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

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

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

1 个答案:

答案 0 :(得分:0)

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