【问题标题】:Self-Hosted Web service no loading自托管 Web 服务不加载
【发布时间】:2017-04-04 00:27:18
【问题描述】:

我只是想打开并运行我的一个团队项目,它是配置为自托管的 .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”的连接失败。错误: 地址不可用 (0x2741)。 System.Net.Sockets.SocketException 请求的地址在其上下文 0.0.0.0:3434 中无效

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

【问题讨论】:

  • 0.0.0.0 表示它绑定到你机器上的所有IP,你仍然需要通过物理地址建立连接。试试http://127.0.0.1:3434,还有http://192.168.0.11

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


【解决方案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。 域名/主机名可以换成“*”表示服务器 应该使用 指定的端口和协议(例如,http://*:5000https://*: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);
    }
}

与上述主机配置应分别匹配以下网址

http://localhost:3434/

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

【讨论】:

  • 好吧,将其更改为 * or for the matter of fact to localhost 开始抛出 404。不知道该怎么办
  • @CoffeeBean 现在是确保控制器配置了正确的路由并且您正在调用正确的 URL。你有处理根 URL 的控制器吗?
  • 好的,所以我发现了问题。在我这边有点愚蠢。一切都设置正确,只是根目录没有像 Index 这样的默认文件要加载,所以我必须显式浏览到 URL/swagger.html 然后它才能工作。
  • 你最后的评论真的很有帮助我真的没有处理根 URL 的控制器
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-01-21
  • 1970-01-01
  • 1970-01-01
  • 2021-10-07
  • 2021-03-25
  • 1970-01-01
相关资源
最近更新 更多