iis7.5 mvc2 404和500.24错误

时间:2010-11-18 20:23:36

标签: asp.net-mvc-2 iis-7.5 http-status-code-404

这是我第一次在IIS7.5上部署MVC2应用程序(.NET4)。我正在使用StructureMap和Fluent NHibernate,并且使用集成安全性在本地运行良好。应用程序确实呈现第一页(controllername/pagename),但在下一个页面(controllername/pagename/id)上抛出错误。

我跑了%windir%\Microsoft.NET\Framework64\v4.0.30319\aspnet_regiis.exe -ir。 启用了HttpRedirection和HttpExceptions。

这是来自View Source的404错误:

  

[HttpException]:未找到路径'/ conrollername / pagename / 1'的控制器或未实现IController。
     在System.Web.Mvc.DefaultControllerFactory.GetControllerInstance(RequestContext requestContext,Type controllerType)
     at CustomerResponses.Infrastructure.StructureMapControllerFactory.GetControllerInstance(RequestContext requestContext,Type controllerType)in C:\ Apps \ Development Source \ CustomerResponsesApplication \ trunk \ CustomerResponses \ Infrastructure \ StructureMapControllerFactory.cs:line 19
     在System.Web.Mvc.DefaultControllerFactory.CreateController(RequestContext requestContext,String controllerName)
     在System.Web.Mvc.MvcHandler.ProcessRequestInit(HttpContextBase httpContext,IController& controller,IControllerFactory& factory)
     在System.Web.Mvc.MvcHandler.BeginProcessRequest(HttpContextBase httpContext,AsyncCallback回调,对象状态)
     在System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute()
     在System.Web.HttpApplication.ExecuteStep(IExecutionStep step,Boolean& completedSynchronously)

另一个链接给了我500.24错误:

  

HTTP错误500.24 - 内部服务器错误
  检测到的ASP.NET设置不适用于集成管理管道模式。

有没有人有任何想法? 感谢

部分在Web.Config

system.webServer - 部分

<validation validateIntegratedModeConfiguration="false"/>
<modules runAllManagedModulesForAllRequests="true"/>

<handlers>
  <add name="UrlRoutingHandler"
     preCondition="integratedMode"
     verb="*" path="UrlRouting.axd"
     type="System.Web.HttpForbiddenHandler,  
         System.Web, Version=2.0.0.0, Culture=neutral,  
         PublicKeyToken=b03f5f7f11d50a3a" />
</handlers>

<!--<handlers>
  <remove name="MvcHttpHandler" />
  <add name="MvcHttpHandler" preCondition="integratedMode" verb="*" path="*.mvc" type="System.Web.Mvc.MvcHttpHandler" />
  <add name="UrlRoutingHandler" preCondition="integratedMode" verb="*" path="UrlRouting.axd" type="System.Web.HttpForbiddenHandler, System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
</handlers>-->

的Global.asax

routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.IgnoreRoute("{resource}.aspx/{*pathInfo}");
routes.IgnoreRoute("{resource}.gif/{*pathInfo}");
routes.IgnoreRoute("{*datepick}",
    new { datepick = @"(.*/)?jquery.datepick.css(/.*)?" });
    // ignore datepick.css file
routes.IgnoreRoute("{*favicon}",
    new { favicon = @"(.*/)?favicon.ico(/.*)?" });
routes.IgnoreRoute("{*chevron}",
    new { chevron = @"(.*/)?Images/Chevron.gif(/.*)?" });
routes.IgnoreRoute("{*iconhome}",
    new { iconhome = @"(.*/)?Images/IconHome.gif(/.*)?" });

routes.MapRoute("test", "testroute",
    new { controller = "compresponses", action = "list" });

routes.MapRoute(
    "Default", // Route name
    "{controller}/{action}/{id}", // URL with parameters
    new {
        controller = "compresponses",
        action = "list",
        id = UrlParameter.Optional
    } // Parameter defaults               
);

2 个答案:

答案 0 :(得分:0)

其中一个问题是: 您的web.config文件包含太多信息。 在集成模式下运行时,IIS 7.5不需要任何其他设置。 我建议创建空白的mvc应用程序并将其发布到webserver上。 我也见过 错误:

[HttpException]:未找到路径'/ conrollername / pagename / 1'的控制器或未实现IController。在System.Web.Mvc.DefaultControllerFactory.GetControllerInstance(RequestContext requestContext,Type controllerType)at

它表示没有从项目中引用系统中引用的是system.web或system.web.mvc。

我的解决方案(可能不是最好的)但是:项目上的右键发生错误并将dll复制到本地,这应该有助于解决错误。

至于错误: 另一个链接给我500.24错误:HTTP错误500.24 - 内部服务器错误检测到的ASP.NET设置不适用于集成管理管道模式。

最好是安装iis控制台并使用iis控制台打开项目。

答案 1 :(得分:0)

将您的应用程序池属性更改为:

.NET Framework Version
-- .NET Framework *version*

Pipeline Mode
-- Classic