在Startup Configuration方法中获取OWIN运行地址

时间:2016-05-16 18:54:11

标签: c# .net asp.net-web-api owin

我有一个带有OWIN启动类的WebApi。

我想在Configuration方法中调用一个方法(为了注册web api),我需要服务的地址(比如localhost:12345)。

我怎么能得到它?

public class Startup
    {
        public void Configuration(IAppBuilder app)
        {
            var config = new HttpConfiguration();
            ...
            config.Formatters.Clear();
            config.Formatters.Add(new JsonMediaTypeFormatter());

            RegisterService(serviceAddress); // <- here
            ...
         }
}

1 个答案:

答案 0 :(得分:1)

我做了类似的事情:

public class WebServer : IDisposable
{
    private static IDisposable WebApplication = null;
    private static WebServer _Instance = null;
    public static GetInstance()
    {
        //other tests before here
        if(_Instance == null)
        {
             WebApplication = Microsoft.Owin.Hosting.WebApp.Start<WebServer>("localhost:12345");
             _Instance = new WebServer();
             _Instance._HostAddress = hostAddress;
        }
    }

    public void Configuration(IAppBuilder app)
    {
        HubConfiguration config = new HubConfiguration();
        config.EnableJSONP = true;
        app.UseCors(CorsOptions.AllowAll);
        app.MapSignalR(config);
        // other config
    }

    public void Dispose()
    {
        if (WebApplication != null)
            WebApplication.Dispose();
        WebApplication = null;
        _Instance = null;
    }
}

WebServer webserver = WebServer.GetInstance();
//later
webserver.Dispose();

Mine与此有点不同,因为我使用多个端口,进行一些SSL检查并传入端口和IP,但这是它的要点。