代码之家  ›  专栏  ›  技术社区  ›  Wiebe Tijsma

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

  •  4
  • Wiebe Tijsma  · 技术社区  · 15 年前

    我在运行在代理后面的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传输的路径,并对其进行处理。

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

    • 在json请求中使用适当的id和值
    • 在HTML中的URL中创建模板(已正确解析),
    • 用json请求中的值替换url模板中的id和值

    这个方法实际上是一种更“干净”的方式,然后传递url。

    1 回复  |  直到 14 年前
        1
  •  0
  •   Branislav Abadjimarinov Ivan Choo    15 年前

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