关于集成管道模式的Cassini错误

时间:2015-02-09 19:14:01

标签: c# .net asp.net-web-api simple-injector cassini

错误

  

此操作需要运行IIS 7.5或更高版本   综合管道模式。

每当我尝试访问我的WebApi页面时,都会出现这种情况。 [HttpPost]装饰方法永远不会被击中。我了解卡西尼不允许集成模式。但是,我使用的代码与我们的代码库中的其他项目非常相似,它们也使用Cassini,我们不会收到此错误。

我不知道我正在使用哪种需要集成管道模式。我的猜测是global.asax引起的问题。我正在使用SimpleInjector。

我把我的global.asax煮到了这个:

    public class WebApiApplication : SimpleInjectorApiApplication<GenericExceptionPolicy>
    {
        protected override Assembly GetVersionAssembly()
        {
            return Assembly.GetExecutingAssembly();
        }

        protected override void RegisterServices()
        {
            base.RegisterServices();

            Container.Register<IEntityCache, EntityCache>();
            Container.Register<ICacheProvider, HttpCacheProvider>();

            Container.Verify();
        }

        protected override void OnApplicationStarted()
        {
            base.OnApplicationStarted();         
            WebApiConfig.Register(RouteTable.Routes);
        }
}

我的控制器:

public class GenericController : ApiController
{
    [HttpPost]
    public HttpResponseMessage Get( /*PocoObjectName item*/)
    {
        throw new NotImplementedException();
     }
}

web.config包含以下相关部分:

  <system.webServer>
    <validation validateIntegratedModeConfiguration="false" />
    <handlers>
      <remove name="ExtensionlessUrlHandler-ISAPI-4.0_32bit" />
      <remove name="ExtensionlessUrlHandler-ISAPI-4.0_64bit" />
      <remove name="ExtensionlessUrlHandler-Integrated-4.0" />
      <add name="ExtensionlessUrlHandler-ISAPI-4.0_32bit" path="*." verb="GET,HEAD,POST,DEBUG,PUT,DELETE,PATCH,OPTIONS" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness32" responseBufferLimit="0" />
      <add name="ExtensionlessUrlHandler-ISAPI-4.0_64bit" path="*." verb="GET,HEAD,POST,DEBUG,PUT,DELETE,PATCH,OPTIONS" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework64\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness64" responseBufferLimit="0" />
      <add name="ExtensionlessUrlHandler-Integrated-4.0" path="*." verb="GET,HEAD,POST,DEBUG,PUT,DELETE,PATCH,OPTIONS" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0" />
    </handlers>
  </system.webServer>

所有这些代码都存在于其他项目中并按原样工作。所以我完全不知道问题在这里。该问题仅发生在Cassini中(IIS Express运行代码正常)。其他项目正在使用Cassini而没有此错误。

1 个答案:

答案 0 :(得分:2)

我更新了Microsoft.AspNet.WebApi.WebHost。在NuGet的包管理器控制台中,我来自:

Install-Package Microsoft.AspNet.WebApi.WebHost -Version 5.1.0.0

Install-Package Microsoft.AspNet.WebApi.WebHost -Version 5.1.2.0

问题消失了。