IIS 7 上的 ASP.net MVC 返回空白页面

9

我在将ASP.net MVC 2 RC 2应用程序部署到生产环境时遇到了一些问题。在开发和测试中,它运行良好,但生产环境似乎还没有升级到IIS 7.5。当我访问该站点时,就像在I am getting a blank page while deploying MVC application on IIS中所描述的那样,我只能看到一个空白页面。

我尝试了那里列出的大多数方法,但都没有成功。我已经尝试使用.net 4的集成和经典配置,并尝试转到特定的控制器和操作,以防它与默认文件有关。但是,奇怪的是,我尝试更改路由,使其使用类似于IIS6的.mvc扩展名,这种方法居然奏效了。我想避免这样做。我已经在application_error中添加了日志记录,但从未抛出任何异常。实际上,我在同一台机器上有一个ASP.net MVC 1应用程序,它可以正常工作。我还尝试添加了一个类似于我的asp.net mvc 1应用程序中的默认文档。

        string originalPath = Request.Path;
        HttpContext.Current.RewritePath(Request.ApplicationPath, false);
        IHttpHandler httpHandler = new MvcHttpHandler();
        httpHandler.ProcessRequest(HttpContext.Current);
        HttpContext.Current.RewritePath(originalPath, false);

这对于 / 文档来说是有效的,但是任何链接都会返回一个空白页面。

有人知道我应该做什么吗?


给其他遇到同样错误的人一个提示:确保没有app_offline.htm文件挂在那里。 - Fredrik Johansson
3个回答

26

在"服务器管理器"控制面板中,必须添加"Web服务器(IIS)"角色下的"HTTP错误"和"HTTP重定向"服务。如果您也想让静态内容如CSS和Javascript正常工作,请启用"静态内容"服务。


如果这对你有帮助(对我有用:)),也许你可以接受这个答案? - Lars Corneliussen
1
我快要因为发布的MVC应用无法正常工作,而在另一个IIS 7实例中返回空白页的问题上发疯了,但是这段代码在Windows Server 2008 R2上的第二个IIS 7实例中运行正常。最终,在添加这些服务角色后,问题得到解决。谢谢! - David Sulpy

2

我还没有安装HTTP重定向角色,但我遇到了一个问题,我想在这里记录下来,以防其他人也遇到同样的问题。

我使用7-Zip压缩程序文件夹,并将其传输到生产服务器。当我解压缩时,Views文件夹中的web.config文件被添加为名为web.config的文件夹,其中包含配置文件。将文件移出并删除文件夹即可解决此问题。

线索在事件查看器中,如果其他答案无法完全帮助,请在那里检查。

现在对我来说不再是空白页面了。


1
我想补充一下为什么IIS / MVC会返回空白页面的另一个原因...假设您有一个应用程序池标识,该标识已被授权访问SQL数据库。现在假设您有两个不同的标识,一个用于生产,一个用于预生产。现在,进一步假设您尊敬的同事决定从生产中恢复数据库,覆盖预生产中存在的数据库。现在,您在预生产中拥有了一个授权给生产用户但未授权给预生产用户的prod数据库的副本。在这种情况下,我现在在预生产中得到空白页面,因为预生产数据库中先前存在的预生产用户的授权现在已被数据库还原清除。因为该用户ID是应用程序池标识,所以现在您的MVC应用程序不再具有访问数据库的权限。这导致MVC呈现空白页面,并让我追寻了两天,因为我认为有人已经更改了Web服务器上的某些IIS设置,但实际上是一个数据库权限问题。也许这会给将来遇到类似问题的人提供一些线索。

我认为我遇到了同样的问题,但不知道如何确定。你是怎么发现问题是由于数据库而不是IIS引起的? - Hoàng Long
1
我已经有一段时间没有处理这个问题了,但我相信原因是我尝试使用该用户ID(通过SQL登录)直接登录数据库,并发现我无法登录,所以这是一个线索,表明该用户不再存在! - David Barrows
谢谢David。我的问题不同,但如果有更准确的错误报告,它会变得比应该更困难。返回的错误消息应该更清晰。 - Hoàng Long

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接