2017-04-04 57 views
0

我只是試圖打開並運行我的一個團隊項目,它是配置爲自託管的.NET Web API項目。爲了它的配置看起來像如下:自我託管的Web服務無法加載

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的這有助於一點點,以便它不會拋出404了 -However ,現在拋出一個不同的錯誤看起來象下面這樣:

[Fiddler] The connection to '0.0.0.0' failed. Error: AddressNotAvailable (0x2741). System.Net.Sockets.SocketException The requested address is not valid in its context 0.0.0.0:3434

我不知道還能做什麼。有什麼建議麼?

+1

'0.0.0.0'意味着它結合在機器上的所有IP ,您仍然需要通過物理地址建立連接。試試'http://127.0.0.1:3434',以及'http:// 192.168.0.11' < - 這將是你的局域網地址。 –

回答

1

嘗試使用

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

host.Run(); 

源文檔Introduction to hosting in ASP.NET Core

Server URLs string

Key: urls . Set to a semicolon (;) separated list of URL prefixes to which the server should respond. For example, http://localhost:123 . The domain/host name can be replaced with " * " to indicate the server should listen to requests on any IP address or host using the specified port and protocol (for example, http://*:5000 or https://*:5001). The protocol (http:// or https://) must be included with each URL. The prefixes are interpreted by the configured server; supported formats will vary between servers.

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

一旦主機了,現在運行的是確保控制器配置了正確的路線的問題,而該權利網址被調用,否則返回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 
+0

好吧,把它改成'*或者事實上到localhost'開始扔404。不知道該怎麼辦 – TeaLeave

+1

@CoffeeBean現在是確保控制器配置正確的路由並且你正在調用權利的問題URL。你有一個處理根URL的控制器嗎? – Nkosi

+0

好,所以我發現了這個問題。這在我身邊有點愚蠢。一切都設置正確,只是根目錄沒有像加載索引這樣的默認文件,所以我不得不顯式瀏覽到URL/swagger.html,然後它工作。 – TeaLeave