2016-06-10 13 views
0

我有一个重写规则说。IIS URL重写忽略.chtml(剃须刀)文件

site.one/content/templates/whatever.cshtml - > site.two /内容/模板/ whatever.cshtml

时site.one试图获取.cshtml文件时会发生问题。它返回一个404. 但是,如果我将扩展名更改为.js或.html,则该规则起作用。

如果我使用site.two链接请求处理它就好了,这是没有任何rewriterules ofcourse。 site.one也可以处理自己目录中的.cshtml文件。

荫使用IIS 10,Urlrewrite模块2,和应用程序请求路由3.

UPDATE

因此,在这种情况下,.cshtml是是获取与异步text.js模板文件,然后使用句柄作为渲染前的最后一步进行编译,但其中一些需要由翻译引擎进行处理。如果不重写,这将起作用。

回答

0

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

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

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

+0

好吧,我明白了。我更新了我的问题以获得更多的上下文。 – jensaronsson