自托管Web服务无需加载

时间:2017-04-04 00:27:18

标签: c# asp.net-core self-hosting asp.net-core-webapi

我只是试图打开并运行我的一个团队项目,它是.NET Web API项目,它被配置为自托管。以下配置如下:

var host = new WebHostBuilder()
                .UseContentRoot(Directory.GetCurrentDirectory())
                .UseKestrel()
                .UseStartup<Startup>()
                .UseUrls("http://0.0.0.0:3434")
                .Build();

            host.Run();
  • 运行时,它成功启动一个控制台,表示该服务正在“http://0.0.0.0:3434”进行监听。到目前为止一切顺利。
  • 现在,当我实际尝试浏览到该位置时,它不会加载任何内容并向我抛出404
  • 我安装了来自Telerik的Fiddler,它有点帮助,所以它不再抛出404了 - 但是,它现在抛出一个不同的错误,如下所示:
  

[Fiddler]与'0.0.0.0'的连接失败。错误:   AddressNotAvailable(0x2741)。 System.Net.Sockets.SocketException   请求的地址在其上下文中无效0.0.0.0:3434

我不知道还能做什么。有什么建议吗?

1 个答案:

答案 0 :(得分:1)

尝试使用

var host = new WebHostBuilder()
            .UseContentRoot(Directory.GetCurrentDirectory())
            .UseKestrel()
            .UseStartup<Startup>()
            .UseUrls("http://*:3434")
            .Build();

host.Run();

来源文档Introduction to hosting in ASP.NET Core

  

服务器网址string

     

键:urls。设置为以分号(;)分隔的URL前缀列表   服务器应该响应哪个。例如,http://localhost:123。   域名/主机名可以替换为&#34; *&#34;表示服务器   应该使用以下方式监听任何IP地址或主机上的请求   指定的端口和协议(例如,http://*:5000或   https://*:5001)。必须包含协议(http://https://)   与每个URL。前缀由配置的服务器解释;   支持的格式因服务器而异。

new WebHostBuilder()
    .UseUrls("http://*:5000;http://localhost:5001;https://hostname:5002")

主机启动并运行后,确保控制器配置了正确的路由并调用了正确的URL,否则将返回404 Not Found

例如,以下控制器

[Route("")]
public class RootController : Controller {
    [HttpGet] //Matches GET /
    public IActionResult Get() {
        return Ok("hello world");
    }

    [HttpGet("echo/{value}] //Matches GET /echo/anything-you-put-here
    public IActionResult GetEcho(string value) {
        return Ok(value);
    }
}
具有上述主机配置的

应分别与以下URL匹配

http://localhost:3434/

http://localhost:3434/echo/stack-overflow