Я пытаюсь использовать автономное консольное приложение OWIN/Katana с моим универсальным обработчиком ASHX, но просто не могу заставить его работать. Это даже поддерживается? Я это зарегистрированный в app.config с путем MyHandler.axd
, как я хотел бы сделать для приложения ASP.NET (и где он работает с этой эквивалентной установкой):OWIN/Katana selfhost generic handler (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
- Microsoft .AspNet.WebApi.OwinSelfHost
- Microsoft.Owin
- Microsoft.Owin.Host.HttpListener
- Microsoft.Owin.Host.SystemWeb Microsoft.Owin.Hosting
- Примечание Кроме того, что мой обработчик HttpTaskAsyncHandler, поэтому я также ссылки
System.Web.dll
EDIT: Я вижу, обработчики настроены here with Nancy для хоста ASP.NET (Microsoft.Owin.Host.SystemWeb). Как это возможно?
Да, подумал. На самом деле это действительно IIS. Благодаря! –