自托管 OWIN 到网络上的其他计算机

Self Hosting OWIN to other computers on the Network

我正在尝试在 WinForms 应用程序中自行托管 OWIN 管道。该管道托管静态文件和 Web Api v2 内容。该实现在本地运行良好,但我不确定为了能够从网络上的远程计算机访问托管文件和 API,我缺少什么。

为简单起见,我从 codeplex here 下载了示例自托管应用程序,并在对基地址进行以下修改后尝试远程访问测试方法(我尝试了 运行 netsh 注册并且我 运行 处于管理员模式)但我仍然无法访问它们。我需要更改什么配置才能查看同一网络上其他计算机的内容?

static void Main()
{
    string baseAddress = "http://*:10281/";
    // Start OWIN host
    using (WebApp.Start<Startup>(url: baseAddress))
    {
        // Create HttpCient and make a request to api/values
        HttpClient client = new HttpClient();

        HttpResponseMessage response = client.GetAsync("http://localhost:10281/api/values").Result;

        Console.WriteLine(response);
        Console.WriteLine(response.Content.ReadAsStringAsync().Result);
        Console.ReadLine(); // Keeps the host from disposing immediately
    }
}

这是启动配置,非常基本的东西:

public class Startup
{
     // This code configures Web API contained in the class Startup, which is additionally specified as the type parameter in WebApplication.Start
    public void Configuration(IAppBuilder appBuilder)
    {
        // Configure Web API for Self-Host
        HttpConfiguration config = new HttpConfiguration();
        config.Routes.MapHttpRoute(
            name: "DefaultApi",
            routeTemplate: "api/{controller}/{id}",
            defaults: new { id = RouteParameter.Optional }
        );

        appBuilder.UseWebApi(config);
    }
}

该代码看起来不错,没有理由不能正常工作,尤其是当您可以在本地访问 OWIN 服务器时。

可能有两个问题阻止了网络访问。您需要为端口 10281 向 Windows 防火墙添加入站规则(或暂时禁用托管计算机上的任何防火墙),或者您的网络以某种方式阻止了流量。