Asp.net-Web-Api

可通過 LAN 訪問的自託管 WebApi

  • January 9, 2019

Self Host WebApi 非常新,但它的易用性和可擴展性給我留下了深刻的印象。至少通過本教程。到目前為止,我所做的一切都適用於我的開發機器,無論我使用 localhost、127.0.0.1 還是我的 LAN Ip (192.168.0.x),但我很困惑為什麼我無法從任何其他電腦甚至其他電腦訪問該服務在同一個子網中。

簡而言之,在執行它的機器上完成教程後:瀏覽到

localhost:3636/api/products/ 

導致預期的 xml 返回。在 LAN 上的另一台機器上瀏覽到:

192.168.0.x:3636/api/products/ 

導致超時 對於那些可能知道這一切如何互動的人的數據點:

1.)我的開發機器(192.168.0.x,伺服器,主機無論你想怎麼稱呼它)上面都有 IIS;我太偏執了,以至於我通過管理 GUI 阻止了它

2.) 我已通過以下命令行執行保留了 URL/埠:

   >netsh http add urlacl url=http://+:3636/ user=DOMAIN\USER listen=yes delegate=yes
   >netsh http add urlacl url=http://192.168.0.x:3636/ user=DOMAIN\USER listen=yes delegate=yes

2.b)我已經同時嘗試了這兩種方法,並嘗試將使用者更改為“每個人”都無濟於事

3.)我試圖改變教程中的程式碼來設置

   config.HostNameComparisonMode = HostNameComparisonMode.Exact //default is Strong Wildcard 

4.)我可以從區域網路上的其他機器成功ping和tracert到192.168.0.x

5.) 一位朋友建議我設置一個 TCPListener 並確保我可以遠端登錄到它以消除防火牆的可能性。如果這個邏輯是合理的,那麼防火牆就不是問題

編輯:感謝您的幫助,這是我認為確認這不是防火牆問題的另一個數據點。我之前在一個相當遲鈍的(至少對於像我這樣的非認證人員)瞻博網路防火牆/路由器後面發布了這個連接。此後,我在家庭網路上的另一台機器(沒有 IIS)上重做了教程,但仍然無法將服務發佈到我 LAN 中的其他電腦。有任何想法嗎?

好吧,這不是硬體防火牆,而是 Windows 防火牆!哎呀,我浪費了很多時間。一旦我關閉了 Windows 防火牆(程式碼無論如何都在 Intranet 中執行),一切正常。

任何人都知道一個解釋防火牆和wireshark如何互動的好網站;或者我想這只是一個人的第一次測試。

我會嘗試幾件事:

首先,去掉 HostNameComparisonMode 行。這實際上可能會禁用來自其他機器的請求。

如果仍然無法正常工作,請嘗試擺脫 URL ACL 並以管理員身份執行您的應用程序,看看是否有效。如果可行,您可以重新添加 URL ACL,而不必以管理員身份執行。您應該只需要以“+”作為主機名的那個。

引用自:https://stackoverflow.com/questions/16867415