2015-11-02 96 views
0

我正在嘗試使用OWIN/Katana selfhosted控制檯應用程序與我的通用ASHX處理程序,但只是無法讓它工作。這甚至支持嗎?我有它在的app.config登記路徑MyHandler.axd因爲我願意爲ASP.NET應用程序做(並在那裏與此相當的安裝方法的效果):OWIN/Katana selfhost通用處理程序(ashx)未調用

<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
  • 微軟.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

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

+0

是的,這麼想。這實際上是一個IIS的東西。謝謝! –