如何让ASP.NET Web API(自托管)只监听* localhost?

时间:2013-06-23 12:31:13

标签: asp.net-web-api

我正在关注自我托管的ASP.NET Web API服务示例here。但是,在基本地址中指定“localhost”作为主机时,会将其翻译为“+”(表示“全部可用”)。

var baseAddress = new Uri("http://localhost:13210");
var configuration = new HttpSelfHostConfiguration(baseAddress);
configuration.Routes.MapHttpRoute(
    name: "DefaultApi",
    routeTemplate: "{controller}/{id}",
    defaults: new {id = RouteParameter.Optional});

using (var server = new HttpSelfHostServer(configuration))
{
    server.OpenAsync().Wait();
    stop.WaitOne();
    server.CloseAsync().Wait();
}

我真的希望我的主机只能绑定到“localhost” - 它只能从同一台机器上访问,而且我不想乱用URL ACL。

如何将Web API配置为而不是将“localhost”重写为“+”?

1 个答案:

答案 0 :(得分:9)

HostNameComparisonMode属性设置为Exact:

var config = new HttpSelfHostConfiguration("https://localhost/api/");
config.HostNameComparisonMode = HostNameComparisonMode.Exact;

有关HostNameComparisonMode

的更多信息,请参阅this article