2017-06-15 164 views
0

我是Azure的新手,我使用Azure免費版作爲基準。在Azure上部署Web API後崩潰

我開發了一個使用Blob和DocumentDb作爲DAL的webapi服務,並且webapi在我的本地機器上完美工作。

在我的azure帳戶中,我打開了應用服務,並在azure上部署了webapi(使用發佈)。

當我嘗試使用,是由湛藍我收到以下錯誤崩潰給出的鏈接直接瀏覽到我的網站:

**試圖通過其禁止接入的方式訪問插座權限127.0.0.1:8081

異常詳細信息:System.Net.Sockets.SocketException:試圖 取得了其訪問權限不允許的方式來訪問一個插座 127.0.0.1:8081**

我檢查了我的項目,我沒有發現任何提及該端口或地址!

請幫我理解這個問題的根源。

+0

如果它是有用的,請註明它作爲一個答案,這將幫助更多的社區誰有同樣的問題。 –

回答

0

您是使用asp.net還是asp.net核心。當然,你的web.config或project.json中定義了8081,azure確實允許進程偵聽自定義端口,因此出現錯誤

你是否在異常中得到了一些調用堆棧?這將有助於識別正在嘗試訪問的代碼8081

0

App Service平臺執行環境與本地不同。所有Azure Web應用程序(以及移動應用程序/服務,WebJobs和函數)均在稱爲沙箱的安全環境中運行。我們可以從Azure official document獲得有關Azure Web App的更多信息。以下是文檔的片段。

網絡端點監聽

應用程序可以經由互聯網訪問的唯一方法是通過已經暴露HTTP(80)和HTTPS(443) TCP端口;應用程序可能不會在其他端口上偵聽來自Internet的數據包。 但是,應用程序可能會創建一個套接字,該套接字可以偵聽沙箱內的連接。例如,同一個應用程序中的兩個進程可以通過TCP套接字相互通信;來自沙箱外部的連接嘗試(儘管它們位於同一臺計算機上)將會失敗。請參閱下一個主題了解更多詳情。

本地地址的請求

嘗試連接到本地地址(如本地主機,127.0.0.1 )和機器本身的IP將失敗,除非在同一沙箱中另一個進程創建了一個監聽套接字目的地港口。

拒絕連接嘗試,如下面的例子試圖連接到127.0.0.1:80。NET將導致以下異常:

Exception Details: System.Net.Sockets.SocketException: An attempt was made to access a socket in a way forbidden by its access permissions 127.0.0.1:80