【发布时间】:2016-11-03 16:08:36
【问题描述】:
我有一个 ASP .NET MVC 4 项目,我正在尝试集成 Owin 应用程序以仅针对特定路径运行,因此所有以 owin-api/* 开头的请求都将由Owin 管道 Microsoft.Owin.Host.SystemWeb.OwinHttpHandler 和 MVC 管道 System.Web.Handlers.TransferRequestHandler
的其他请求要做到这一点,我有以下几点:
在Web.config
中<appSettings>
<add key="owin:appStartup" value="StartupServer.Startup"/>
</appSettings>
<system.webServer>
<handlers>
<remove name="ExtensionlessUrlHandler-Integrated-4.0" />
<remove name="OPTIONSVerbHandler" />
<remove name="TRACEVerbHandler" />
<add name="ExtensionlessUrlHandler-Integrated-4.0" path="*." verb="*" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0" />
<add name="Owin" verb="*" path="owin-api/*" type="Microsoft.Owin.Host.SystemWeb.OwinHttpHandler, Microsoft.Owin.Host.SystemWeb" />
</handlers>
</system.webServer>
启动类:
namespace StartupServer
{
public class Startup
{
public void Configuration(IAppBuilder app)
{
app.Run(context =>
{
return context.Response.WriteAsync("Owin API");
});
}
}
}
但是,“Owin API”现在是每个请求的输出。我如何告诉 IIS 只有在 Web.config 中指定的路径 owin-api/* 时才使用 OwinHttpHandler?
【问题讨论】:
-
您是否尝试在
<location path="owin-api">下添加处理程序? -
@haim770 不幸的是它不起作用。问题是 Owin 似乎优先于所有其他 http 处理程序
-
你试过不带通配符的
path="owin-api"吗?
标签: c# asp.net asp.net-mvc-4 owin katana