错误
此操作需要运行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而没有此错误。
答案 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
问题消失了。