2009-02-17 108 views
17

我目前正在使用MVC ASP.NET的RC构建我的应用程序,该应用程序现在不显示任何内容。 我global.ascx的路线是典型的即我在IIS上部署MVC应用程序时得到空白页面

routes.MapRoute(
      "Default",            // Route name 
      "{controller}.aspx/{action}/{id}",       // URL with parameters 
      new { controller = "Home", action = "Index", id = "" } // Parameter defaults 
     ); 
     routes.MapRoute(
      "Root", 
      "", 
      new { controller = "Home", action = "Index", id = "" } 
     ); 

任何一个可以弄清楚为什么它显示我

只有空白页

对不起,我忘记提及的是IIS 6

有趣的是,它也在我的本地IIS上工作(即,本地内置的VS &标准与XP)以及

回答

1

我解决了这个问题,主要的问题是不同版本的MVC框架。生产服务器有MVC Beta,而我已经安装了MVC RC1。所以只要我在服务器上安装RC1以及运行mvc扩展注册脚本,一切正常感谢您的帮助球员

0

什么是服务器环境?如果它不是IIS7/Server 2008,那么为了让路由正常工作,你还必须做其他的调整,尽管如果情况如此,你可能会得到一个错误页面,而不是空白页面。

0

如果是生产服务器出现问题,则可能是角色权限。您需要确保应用程序所使用的所有文件夹和文件都允许读取(并且在某些情况下,如果使用日志的话)写入IIS正在使用的角色身份。

通常情况下,身份IIS使用在网站属性 - >目录安全性 - >编辑(身份验证和访问控制)。如果您不想让网络上的任何计算机访问该网站,则应该关闭“启用匿名访问”。如果你确实想要这样做,这将是你需要在你的webapp文件夹和文件中提供访问的身份。否则,您可能需要访问包含您想要访问的用户身份的角色。

+0

我明白你的意思,但我没有使用任何身份验证,因为我甚至通过web.config禁用身份验证,只有身份验证我需要的是运行数据库实例。 我没有使用任何日志记录以及 – Gripsoft 2009-02-17 18:19:27

+0

我想,也许IIS认证在web.config中的身份验证设置分开的东西,虽然我不知道。我认为至少值得尝试打开IIS中的匿名访问并将该身份添加到webapp文件夹和文件。 – Daniel 2009-02-17 18:26:31

+0

如果仍然不能与这些设置工作,那么我不知道它可能是些什么,因为我只看到一个空白页为您的描述,当我有权限设置问题。 – Daniel 2009-02-17 18:29:31

0

从外观上看,如果你打算使用像/Home.aspx这样的网址,但是如果你只是去了/ url,那么ASP.net不知道如何处理网址。它会尝试匹配IIS默认页面,如index.html,default.aspx,index.aspx等。如果没有发现任何内容,那么请求不会得到任何地方。尝试创建一个default.aspx(或路径中的任何其他索引文件),然后在page_load中执行response.redirect("~/Home.aspx")

如果不工作,我想看看这个source。 IIS 6和MVC不能很好地发挥作用的主要原因之一是默认情况下,IIS 6不具有映射到ASP.net dll的通配符*。

我确定这是产品服务器配置的一种方式,您可以对XP实例和产品进行任何比较吗?

0

您是否在生产服务器上的web.config中定义了HTTP处理程序和模块?

<httpHandlers> 
     <remove verb="*" path="*.asmx"/> 
     <add verb="*" path="*.asmx" validate="false" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/> 
     <add verb="*" path="*_AppService.axd" validate="false" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/> 
     <add verb="GET,HEAD" path="ScriptResource.axd" type="System.Web.Handlers.ScriptResourceHandler, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" validate="false"/> 
     <add verb="*" path="*.mvc" validate="false" type="System.Web.Mvc.MvcHttpHandler, System.Web.Mvc, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/> 
    </httpHandlers> 
    <httpModules> 
     <add name="ScriptModule" type="System.Web.Handlers.ScriptModule, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/> 
     <add name="UrlRoutingModule" type="System.Web.Routing.UrlRoutingModule, System.Web.Routing, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/> 
    </httpModules> 

在IIS6,URL必须包含.mvc(如/Products.mvc/ListAll)。检查这些指南进行适当的IIS 6的配置和扩展.mvc解决方法:

Deploying ASP.NET MVC to IIS 6

Using ASP.NET MVC on IIS 6 without the .MVC Extension

19

当你在global.asax中有错误处理设置时,你也会得到一个空白页面和一般的东西是错误的(就像一个无法找到的程序集)。

当您在global.asax中禁用它时,您可以看到服务器错误。 不要忘记修复这些初始错误后再次启用它。

protected void Application_Error(object sender, EventArgs e) 
{ 
    Exception exception = Server.GetLastError(); 
    RouteData routeData = new RouteData(); 
    routeData.Values.Add("controller", "ErrorController"); 
    routeData.Values.Add("action", "HandleTheError"); 
    routeData.Values.Add("error", exception); 

    Response.Clear(); 
    Server.ClearError(); 

    IController errorController = new ErrorController(); 
    errorController.Execute(new RequestContext(
     new HttpContextWrapper(Context), routeData)); 
} 
3

当发生特别的地方错误的空白页显示 - 在我的情况,这是一个MethodNotFoundException ...

要查看错误,请确保您启用“HTTP错误”和“HTTP重定向“服务在”Web服务器(IIS)“角色

2

正常情况下,当我得到它时,这是因为我忘记了将以下内容添加到Web.config中,然后在IIS7上进行开发后部署到IIS6(或IIS Express 7附带Visual Studio):

<system.webServer> 
    <modules runAllManagedModulesForAllRequests="true" /> 
</system.webServer> 
0

这意味着你在MVC应用程序中抛出了一个Exception,但是你的MVC中可能有一个类正在捕获,过滤和隐藏这些异常。那些例外仍然被抛出,但你不能看到造成他们的是什么。 MVC仍然重新路由页面请求,但由于隐藏的异常而没有返回任何内容。你不能停止这个问题,直到你看到异常被抛出。在关闭MVC的异常处理过滤器之前,您无法在网页中看到异常。

可能阻止您看到异常的一件事是当网站首次加载时,GlobalFilterCollection通过global.asax中的MVC筛选器调用。您通常可以在Global.asax文件中找到这些调用。该文件通常在网站首次加载时及其事件时调用HttpApplication对象。在它的事件中,它会加载开发人员添加的默认MVC路线,但也可以加载处理站点范围异常处理的过滤器。开发人员经常通过global.asax中的过滤器来处理异常处理,认为它们智能地处理来自用户的异常和问题,但这是一个错误。如果你在那里发现一个过滤器,只是将它们评论出来。突然之间,所有错误都会在您的HTML页面中出现。

然后,您可以排除故障!祝你好运!

0

这也发生在我身上的时候:

1)我添加了一个CompressAttribute添加Gzip已当浏览器接受它。

response.AppendHeader("Content-Encoding", "gzip"); 
        response.Filter = new GZipStream(response.Filter, CompressionMode.Compress); 

2)I被修改输出HTML来改变显示的电话号码:

response.Filter = new OutputHtmlReplacer(response.Filter, phoneNumber); 

其中OutputHtmlReplacer是从MemoryStream的继承

所以一类,将溶液:

1)验证标题并检查我们是否应用压缩。

2)如果是,则新的OutputHtmlReplacer响应过滤器必须由GzipStream包装。

相关问题