我有一条重写规则说。
site.one/content/templates/whatever.cshtml - > site.two /内容/模板/ whatever.cshtml
当site.one尝试获取.cshtml文件时,会出现此问题。它返回404。 但是,如果我将扩展名更改为.js或.html,则规则可以正常运行。
如果我使用site.two链接请求处理它就好了,这是没有任何重写的课程。 site.one还可以在自己的目录中处理.cshtml文件。
我使用IIS 10,Urlrewrite模块2和应用程序请求路由3。
更新
因此,在这种情况下,.cshtml是使用异步text.js获取的模板文件,然后使用把手进行编译,作为渲染之前的最后一步,但是由于翻译,其中一些需要由razor引擎处理。如果不重写,这就有效。
答案 0 :(得分:0)
Razor文件永远不会由MVC框架或IIS提供。 Razor文件由MVC处理,处理结果通过控制器动作方法发送到输出。在这种情况下,服务器正在使用404响应正确响应,因为默认情况下会阻止这些文件(您永远不会希望向用户提供带有源代码的未处理.cshtml
文件。)
由于这些文件被IIS阻止,因此无法使用URL重写模块重定向它们(也不应该)。
我猜您可能想要重定向您的MVC URL,默认情况下没有扩展名。访问它们的默认方式(可以自定义)是/{controller}/{action}/
。例如,在MVC模板中,访问about页面的默认方式是通过URL /Home/About/
。