2017-05-15 31 views
0

我使用OWIN創建了C#控制檯應用程序,並且我在本地主機以外的應用程序的可見性方面存在問題。例如,如果我在URL中使用本地主機發出POST請求一切正常,但是當我將郵遞員中的URL替換爲我的全局IP地址時,它停止工作。端口被打開,我可以從外部計算機ping服務器。基於IIS的早期應用程序在此端口上使用此全局IP地址和端口工作良好。OWIN服務在網絡中不可見

_webApp = WebApp.Start<StartOwin>("http://localhost:8511"); 

上面的行應該包含我的全局IP或它可以是具有特定端口的本地主機?

全碼:

public class Program 
    { 
     public static int Main(string[] args) 
     { 
      return (int)HostFactory.Run(x => 
      { 
       x.StartAutomatically(); 
       x.Service<OwinService>(s => 
       { 
        s.ConstructUsing(() => new OwinService()); 
        s.WhenStarted(service => service.Start()); 
        s.WhenStopped(service => service.Stop()); 
       }); 
      }); 
     } 
    } 

    public class OwinService 
    { 
     private IDisposable _webApp; 

     public void Start() 
     { 
      _webApp = WebApp.Start<StartOwin>("http://localhost:8511"); 
     } 

     public void Stop() 
     { 
      _webApp.Dispose(); 
     } 
    } 

    public class StartOwin 
    { 
     public void Configuration(IAppBuilder appBuilder) 
     { 
      var config = new HttpConfiguration(); 

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

      appBuilder.UseWebApi(config); 
     } 
    } 

#UPDATE 我已經改變端口以適應8512,完全解鎖此端口並提出以下POST請求:

#UPDATE2

設置 _webApp = WebApp.Start<StartOwin>("http://*:8511");關閉整個防火牆它按預期工作後,所以它的網絡問題(serverfault.com)

解決方案

_webApp = WebApp.Start<StartOwin>("http://*:8511"); 並添加新的防火牆規則(允許入站)這個應用

+0

你檢查了你的防火牆設置嗎? –

+0

@SteveB是的,我爲所有程序解鎖了TCP端口8511 – mkul

+0

'請求主機名無效':這似乎不是網絡isse,而是更多的格式問題。你能告訴我們什麼是你想要連接的確切地址嗎?也許有一個錯字? –

回答

3
_webApp = WebApp.Start<StartOwin>("http://*:8511"); 

不要擔心具體的IP或主機名的可執行文件。只要將它綁定到「任何」使用上述。

+0

它適用於本地主機,127.0.0.1,我的私人地址,機器名稱,但它不適用於外部IP地址 – mkul

+0

您不能綁定到外部地址,只有系統分配給它的一個地址。 – Amy

+0

當我關閉整個防火牆時,此解決方案正常工作 – mkul