【问题标题】:IIS url rewrite ignores .chtml ( Razor ) filesIIS url 重写忽略 .cshtml ( Razor ) 文件
【发布时间】:2016-06-11 04:47:03
【问题描述】:

我有一条重写规则。

site.one/content/templates/whatever.cshtml -> site.two/content/templates/whatever.cshtml

当 site.one 尝试获取 .cshtml 文件时会出现问题。它返回一个 404。 但是,如果我将扩展名更改为 .js 或 .html,则该规则有效。

如果我使用 site.two 链接,请求可以很好地处理它,这当然没有任何重写规则。 site.one 还可以处理自己目录中的 .cshtml 文件。

我正在使用 IIS 10、Urlrewrite 模块 2 和应用程序请求路由 3。

更新

因此,本例中的 .cshtml 是使用异步 text.js 获取的模板文件,然后作为渲染前的最后一步使用把手编译,但其中一些需要由 razor 引擎处理,因为翻译.如果不重写,这将有效。

【问题讨论】:

    标签: asp.net-mvc .htaccess iis razor url-rewriting


    【解决方案1】:

    MVC 框架或 IIS 从不提供 Razor 文件。 Razor 文件由 MVC 处理,处理结果通过控制器操作方法发送到输出。在这种情况下,服务器会正​​确响应 404 响应,因为默认情况下会阻止这些文件(您永远不会希望向用户提供未处理的带有源代码的 .cshtml 文件)。

    由于这些文件被 IIS 阻止,因此无法使用 URL 重写模块重定向它们(也不应该有)。

    我猜您可能想要重定向您的 MVC URL,默认情况下它们没有扩展名。访问它们的默认方式(可以自定义)是/{controller}/{action}/。例如,在 MVC 模板中,访问 about 页面的默认方式是通过 URL /Home/About/

    【讨论】:

    • 好的,我明白了。我已经更新了我的问题以获得更多背景信息。
    猜你喜欢
    • 2019-09-09
    • 2015-09-18
    • 1970-01-01
    • 1970-01-01
    • 2017-07-25
    • 2014-11-30
    • 2018-11-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多