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域后缀),我也尝试过,但得到相同的结果。
如果希望使用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;