【发布时间】:2011-09-09 20:11:04
【问题描述】:
我有标准的 ASP.NET 4 应用程序。在这个应用程序内部也有一些剃刀(例如test.cshtml)文件。但是,如果我将浏览器指向 /test 文件(不带扩展名),则 ASP.NET 应用程序可以工作。 IIS(静态文件处理程序)返回 404。
相同的应用程序甚至独立的.cshtml 文件都可以在本地机器(使用 IIS7.5/Win7)和使用(IIS7.5/Win2008R2)的服务器上运行,但是它不能在使用 IIS7.0 的服务器上运行/Win2008.
两台机器上都安装了 MVC3,两台机器上的应用程序池都集成了 .NET 4.0。
.cshtml 处理程序如何工作? IIS 何时决定使用静态文件处理程序以及.cshtml 处理程序何时?我还应该检查什么?
编辑:
澄清 - 我实际上并没有使用整个 MVC 框架,它就像普通的 .ASPX 或 PHP 文件一样。没有控制器,没有路线,没有“视图”。除了旧的 ASP.NET 应用程序之外,我还将它用于一个简单的脚本。
我认为这不是编程问题,因为它可以在本地计算机上运行,而是配置问题 - Win2008 服务器上的 IIS 可能配置不正确。
EDIT2:
(IIS7.5的机器可以,只有IIS7.0的机器不行。但是不知道是不是IIS版本的问题。)
EDIT3:
在我工作的本地计算机上,我没有设置任何路由。 TheCodeKing 和 Keith 建议我需要在某个地方设置路由。也许是的,但它不在我的应用程序中。它可能在 IIS 配置中默认设置。
您是否有任何提示可以找到这种“隐式”路由?
EDIT4:
注意:在所有计算机上,*.cshtml 都有 HttpForbiddenHandler,因为您无法下载 cshtml 文件。还有TransferRequestHandler 代表*.。 (两者都启用。)
EDIT5:
我发现在它工作的服务器上,我需要在 web 根目录中有任何 .cshtml 文件。如果我从 web 根目录中删除 .cshtml 并尝试从子目录中调用任何它将不起作用。
EDIT6:
我在另外两台机器上尝试过:一台使用IIS 7.5,另一台使用IIS 7.0。在IIS 7.5 上它可以工作(普通安装无配置),但在IIS 7.0 上它不起作用。
如何让它在 IIS 7.0 上运行?
【问题讨论】:
-
我不确定我是否理解。在MVC下,你通过路由引擎调用控制器方法,使用http://mydomain/mycontroller/mycontrollermethod等形式的URL。控制器方法调用适当的 cshtml 视图。为什么要直接打开视图?
-
因为它不是典型 MVC 应用程序的“视图”,而是一个简单的脚本。
-
在 IIS 7 中,对于您的站点,您是否检查了
Handler Mappings中的 *.cshtml?
标签: asp.net asp.net-mvc asp.net-mvc-3 iis razor