OWIN / Katana selfhost泛型处理程序(ashx)未被调用

时间:2015-11-02 21:40:47

标签: asp.net asp.net-web-api owin katana

我试图将OWIN / Katana自主控制台应用程序与我的通用ASHX处理程序一起使用,但却无法使其正常工作。这甚至支持?我在app.config中使用路径MyHandler.axd注册了它,因为我正在为ASP.NET应用程序(以及它与此等效设置一起使用的地方)进行注册:

 <system.webServer>
    <handlers>
        <remove name="ExtensionlessUrlHandler-Integrated-4.0" />
        <remove name="ExtensionlessUrlHandler-ISAPI-4.0_32bit" />
        <remove name="ExtensionlessUrlHandler-ISAPI-4.0_64bit" />
        <add name="MyHandler" path="MyHandler.axd" verb="*" type="My.AssemblyName.Handlers.MyAsyncHandler, My.AssemblyName, Culture=neutral" />
    </handlers>
</system.webServer>

处理程序实现(未调用):

 namespace My.AssemblyName.Handlers
 {
     public class MyAsyncHandler : HttpTaskAsyncHandler
     {
        public override async Task ProcessRequestAsync(HttpContext context)
        {
            // code that is not hit
        }
    }
}

我的Startup类是这样实现的:

public class Startup
{
    public void Configuration(IAppBuilder appBuilder)
    {
        HttpConfiguration config = new HttpConfiguration();
        config.Routes.IgnoreRoute("MyHandler.axd", "{resource}.axd/{*pathInfo}");
        config.Routes.IgnoreRoute("MyHandler.ashx", "{resource}.ashx/{*pathInfo}");
        config.Routes.MapHttpRoute(
            name: "DefaultApi",
            routeTemplate: "api/{controller}/{id}",
            defaults: new {id = RouteParameter.Optional}
            );

        appBuilder.UseWebApi(config);
    }
}

使用

调用应用程序
using (WebApp.Start<Startup>(url: baseAddress))
{
    Console.ReadLine();
}

这些是我安装的NuGet包:

  • Microsoft.AspNet.WebApi.Client
  • Microsoft.AspNet.WebApi.Core
  • Microsoft.AspNet.WebApi.Owin
  • Microsoft.AspNet.WebApi.OwinSelfHost
  • Microsoft.Owin
  • Microsoft.Owin.Host.HttpListener
  • Microsoft.Owin.Host.SystemWeb Microsoft.Owin.Hosting
  • 另请注意,我的处理程序是 HttpTaskAsyncHandler ,所以我也引用了System.Web.dll

编辑:我看到处理程序已为ASP.NET主机(Microsoft.Owin.Host.SystemWeb)配置here with Nancy。怎么可能?

1 个答案:

答案 0 :(得分:1)

不,不支持在Katana selfhost中运行任何System.Web组件。 Katana selfhost仅支持WebApi,SignalR和其他OWIN兼容框架。