自托管和 IIS 托管的 OWIN 项目
Self-Hostable and IIS-hostable OWIN project
我想在自托管的 OWIN 实例下将我的解决方案修改为 运行,但我也需要在必要时将其修改为 http://localhost 下的 运行。
我应该如何构建我的 Startup class 才能被双方识别?
目前,我将 Web API 项目设置为控制台应用程序,将项目 URL 设置为 http://localhost:2746,这是我的 Startup class:
[assembly: OwinStartup(typeof(Startup))]
namespace Books
{
public class Startup
{
public static void Main(string[] args)
{
const int port = 2746;
var url = $"http://localhost:{port}/";
using (WebApp.Start<Startup>(new StartOptions(url) { ServerFactory = "Microsoft.Owin.Host.HttpListener" }))
{
var client = new HttpClient { BaseAddress = new Uri(url) };
Console.ReadLine();
}
}
public void Configuration(IAppBuilder app)
{
HttpConfiguration httpConfiguration = new HttpConfiguration();
WebApiConfig.Register(httpConfiguration);
app.Use<CustomExceptionMiddleware>().UseWebApi(httpConfiguration);
app.UseFileServer(StaticFileConfig.Build());
}
}
}
我在 web.config 中也有这个:
<add key="owin:AutomaticAppStartup" value="false" />
使用两个项目:
- 为 api 控制器创建一个网络项目。这个项目可以在 iis 中托管
- 再创建一个console项目作为self-host,这个项目需要引用web项目,现在可以分享
WebApiConfig
/Controllers
到这个项目
ps:OwinStartup
属性表示 iis 的入口点,但我使用传统的 global.asax
来初始化 api 配置。这样 Startup
class 也可以共享来自 WebApiConfig
的配置
我想在自托管的 OWIN 实例下将我的解决方案修改为 运行,但我也需要在必要时将其修改为 http://localhost 下的 运行。
我应该如何构建我的 Startup class 才能被双方识别?
目前,我将 Web API 项目设置为控制台应用程序,将项目 URL 设置为 http://localhost:2746,这是我的 Startup class:
[assembly: OwinStartup(typeof(Startup))]
namespace Books
{
public class Startup
{
public static void Main(string[] args)
{
const int port = 2746;
var url = $"http://localhost:{port}/";
using (WebApp.Start<Startup>(new StartOptions(url) { ServerFactory = "Microsoft.Owin.Host.HttpListener" }))
{
var client = new HttpClient { BaseAddress = new Uri(url) };
Console.ReadLine();
}
}
public void Configuration(IAppBuilder app)
{
HttpConfiguration httpConfiguration = new HttpConfiguration();
WebApiConfig.Register(httpConfiguration);
app.Use<CustomExceptionMiddleware>().UseWebApi(httpConfiguration);
app.UseFileServer(StaticFileConfig.Build());
}
}
}
我在 web.config 中也有这个:
<add key="owin:AutomaticAppStartup" value="false" />
使用两个项目:
- 为 api 控制器创建一个网络项目。这个项目可以在 iis 中托管
- 再创建一个console项目作为self-host,这个项目需要引用web项目,现在可以分享
WebApiConfig
/Controllers
到这个项目
ps:OwinStartup
属性表示 iis 的入口点,但我使用传统的 global.asax
来初始化 api 配置。这样 Startup
class 也可以共享来自 WebApiConfig