在Azure上部署Web API后崩溃

问题描述:

我是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

如果它是有用的,请注明它作为一个答案,这将帮助更多的社区谁有同样的问题。 –

您是使用asp.net还是asp.net核心。当然,你的web.config或project.json中定义了8081,azure确实允许进程侦听自定义端口,因此出现错误

你是否在异常中得到了一些调用堆栈?这将有助于识别正在尝试访问的代码8081

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