Web API 2 OWIN Self Host只能通过IP地址连接

本文关键字:IP 地址 连接 API OWIN Self Host Web | 更新日期: 2023-09-27 18:09:30

我使用Microsoft OWIN 3.0.1和Web API 5.2.3 NuGet包创建了一个自托管服务。它还使用Microsoft.AspNet.WebApi CORS .5.2.3和Microsoft.Owin.Cors 3.0.1包来支持CORS。CORS设置配置如下:

private static void ConfigureCrossOriginResourceSharing(IAppBuilder app, HttpConfiguration config)
{
    app.UseCors(CorsOptions.AllowAll);
    var cors = new EnableCorsAttribute("*", "*", "*");
    config.EnableCors(cors);
}

主机启动如下:

var startOptions = new StartOptions(url: "http://*:64000/");
Task.Run(() =>
{
    // Start OWIN host 
    using (WebApp.Start(startOptions, startUp.Configuration))
    {
        //etc.

连接到服务时,我只能使用IP地址来调用它(例如http://192.168.0.1:64000/)。当使用DNS名称(例如http://hostname:64000/)时,返回HTTP 502坏网关错误。这是不理想的。

我认为这与CORS配置有关。你知道有什么问题吗?

更新:根据下面的建议,我已将开始url更改为http://+:64000/。我现在从客户端得到了400个错误的请求响应。我可以ping解析为完全限定名称的服务器(例如hostname.domain.corp域后缀),我也尝试过,但得到相同的结果。

Web API 2 OWIN Self Host只能通过IP地址连接

如果希望使用Kerberos进行身份验证,则需要为应用程序使用的主机名/端口组合在AD上注册一个SPN。

这与自托管站点的身份验证设置有关。由于某些原因,在我们的网络上(可能是2003 AD vs 2012服务器做主机,我不确定)kerberos身份验证失败。日志含义使用IP地址认证成功后,退回到使用NTLM认证。将认证设置为只使用NTLM,可以同时使用主机名和IP地址。

Before (failed, IP only as falling back to NTLM):

listener.AuthenticationSchemes = AuthenticationSchemes.IntegratedWindowsAuthentication;

After(主机和IP均成功):

listener.AuthenticationSchemes = AuthenticationSchemes.Ntlm;