不再 Global.asax,但 OWIN Startup.cs

No more Global.asax, but OWIN Startup.cs

所以有人决定不再需要 global.asax,我们都应该使用 OWIN。这对我来说是新的,到目前为止我发现的所有示例将使我非常精通在任何地方显示 "hello world"。很好,因为这不是很有用。

我们现有的 REST API 都使用 global.asax 文件。看来我现在需要迁移这个。下面是我们的 Application_Start() 方法的内容:

protected void Application_Start()
    {

        SD.Tools.OrmProfiler.Interceptor.InterceptorCore.Initialize("UnityWebService");
        log4net.Config.XmlConfigurator.ConfigureAndWatch(new FileInfo(String.Format("{0}/{1}", System.Web.Hosting.HostingEnvironment.ApplicationPhysicalPath, "log4net.config")));
        UnityConfig.RegisterComponents();
        AutoMapperConfig.Configure();
        GlobalConfiguration.Configuration.IncludeErrorDetailPolicy = IncludeErrorDetailPolicy.Always;
        GlobalConfiguration.Configure(WebApiConfig.Register);
        GlobalConfiguration.Configuration.Filters.Add(new ExceptionHandlingAttribute());
        GlobalConfiguration.Configuration.Filters.Add(new ValidateModelStateAttribute());
        GlobalConfiguration.Configuration.Filters.Add(new CheckModelForNullAttribute());
        GlobalConfiguration.Configuration.MessageHandlers.Add(new MessageHandlerMain());
    }

如何转换才能在 startup.cs 中使用?它只是直接转置到 :

public void Configuration(IAppBuilder app)
    {

    }

我是不是漏掉了什么技巧?

提前致谢

您可以将这些行中的大部分原封不动地移动到 Startup class 的 Configuration 方法中。像下面这样的东西应该这样做:

public void Configuration(IAppBuilder appBuilder)
{
    var config = new HttpConfiguration();
    WebApiConfig.Register(config);
    config.Filters.Add(new ExceptionHandlingAttribute());
    // move other lines over here
    appBuilder.UseWebApi(config);
}