代码之家  ›  专栏  ›  技术社区  ›  Benjamin Pollack Stefan Rusek

使用url.routeurl重定向到带有,%等的url

  •  2
  • Benjamin Pollack Stefan Rusek  · 技术社区  · 16 年前

    在我正在开发的Web应用程序中,我们希望能够显示给定路径上资源的信息。路径完全是虚拟的,它只存在于应用程序中,因此我们不会真正遇到用户设置虚拟路径的问题,而这些虚拟路径在正常的文件系统标准中是“奇怪的”。

    问题是:我们有一条路线可以读取类似于

    /Files/{*path}
    

    我们试图用

    Url.RouteUrl("File", new { path = somePath })
    

    这通常有效,但如果某个路径包含&或等,则会失败。在那些情况下,我很差劲。我不能 UrlEncode(somePath) 此时,因为routeurl执行自己的url编码,但我不能让它们保持原样,因为否则它们会被错误地处理(octothorp不会被传递到路由数据,而与符号和会混淆IIS)。有没有明智的方法?或者我基本上只需要通过字符串插值实现我自己的路由吗?

    2 回复  |  直到 15 年前
        1
  •  0
  •   Stephen M. Redd    16 年前

    我一直在玩你的例子,我发现使用带有特殊字符的routeurl没有任何问题,至少在我的测试环境中没有。routeURL方法对URL进行了正确的编码,控制器以解码的形式获取值,没有任何问题或变形。

    我已经在IIS7和VS2008开发Web服务器中测试过了这一点。

    您能提供更完整的示例代码吗?

        2
  •  0
  •   Benjamin Pollack Stefan Rusek    16 年前

    到目前为止,我找到的最好的答案是,尽管它只在iis7上工作,但要遵循下面的说明: http://dirk.net/2008/06/09/ampersand-the-request-url-in-iis7/ 编辑注册表并更改一些iis7的默认行为。这对我们来说是不可接受的,因为我们正在制作一个应用程序,它将安装在最终用户的机器上,而且无论如何,即使我们没有,也有一个简单的事实,即iis6和iis5不响应这个序列。对于早期版本的IIS的任何想法,或者在iis7中以编程方式覆盖此行为的方法,都是非常好的。