我是Azure新手,我使用Azure免费版作为基准。
我开发了一个使用Blob和DocumentDb作为DAL的webapi服务,而webapi在我的本地机器上运行良好。
在我的azure帐户中,我打开App服务,然后在azure上部署webapi(使用发布)。
当我尝试使用azure给出的url浏览我的网站时,我收到以下崩溃错误:
**尝试以其访问权限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的代码
答案 1 :(得分:0)
App Service平台执行环境与本地不同。所有Azure Web应用程序(以及移动应用程序/服务,WebJobs和函数)都在称为沙箱的安全环境中运行。我们可以从Azure official document获取有关Azure Web App的更多信息。以下是该文档的摘录。
网络端点监听
通过互联网访问应用程序的唯一方法是通过已公开的HTTP(80)和HTTPS(443) TCP端口;应用程序可能无法在其他端口上侦听来自Internet的数据包。 但是,应用程序可能会创建一个可以从沙箱中侦听连接的套接字。例如,同一app中的两个进程可以通过TCP套接字相互通信;从沙箱外部进入的连接尝试虽然位于同一台机器上,但会失败。有关其他详细信息,请参阅下一主题。
本地地址请求
本地地址的连接尝试(例如localhost, 127.0.0.1 )和机器自身的IP将失败,除非同一个沙箱中有另一个进程已在目标端口上创建了一个侦听套接字。
从.NET尝试连接到127.0.0.1:80的拒绝连接尝试将导致以下异常:
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