Asp.net mvc 4 HttpSelfHostServer未绑定到主机名

Asp.net mvc 4 HttpSelfHostServer未绑定到主机名,asp.net-mvc-4,asp.net-web-api,Asp.net Mvc 4,Asp.net Web Api,我使用的是HttpSelfHostServer和asp-net-mvc4-web-api 当我创建服务器时,我会指定一个基址,通常类似于http://foo.com:8080 假设此服务器有多个IP10.0.0.0,10.0.0.1,10.0.0.2 我们也会这样说 http://foo.com指向10.0.0.0 http://bar.com指向10.0.0.1 http://baz.com指向10.0.0.2 如果HttpSelfHostServer绑定到http://foo.com:8

我使用的是
HttpSelfHostServer
asp-net-mvc4-web-api

当我创建服务器时,我会指定一个基址,通常类似于
http://foo.com:8080

假设此服务器有多个IP
10.0.0.0
10.0.0.1
10.0.0.2

我们也会这样说

  • http://foo.com
    指向
    10.0.0.0
  • http://bar.com
    指向
    10.0.0.1
  • http://baz.com
    指向
    10.0.0.2
如果HttpSelfHostServer绑定到
http://foo.com:8080
为什么我仍然可以在
http://bar.com:8080
http://baz.com:8080

下面是实例化服务器的代码

    public Server(string name, Uri baseAddress)
    {
        Name = name;
        TimeCreated = DateTime.Now;
        BaseAddress = baseAddress;
        var config = new HttpSelfHostConfiguration(BaseAddress);

        config.Routes.MapHttpRoute(
            name: "DefaultApi",
            routeTemplate: "api/{controller}/{id}",
            defaults: new {id = RouteParameter.Optional}
            );

        // Create server
        _server = new HttpSelfHostServer(config);
    }    

很可能这三个地址都将变为127.0.0.1。您是否尝试从其他计算机访问它们?

您可以通过更改HttpSelfHostConfiguration上的HostNameComparisonMode属性来修改此行为。默认情况下,该值为strong通配符

config.HostNameComparisonMode=System.ServiceModel.HostNameComparisonMode.strong通配符

您可以在此处阅读有关此设置的更多信息:

这些请求都来自远程机器。请立即访问。正是我需要的。