【问题标题】:.NET Core Azure Web App An attempt was made to access a socket in a way forbidden by its access permissions.NET Core Azure Web App 尝试以访问权限禁止的方式访问套接字
【发布时间】:2020-04-24 05:21:42
【问题描述】:

我有一个多项目解决方案在本地“不调试就开始”中运行良好。

在将 .NET Core 多项目解决方案发布到 Azure Web 应用程序后,第一个 http 客户端设置失败并产生以下错误 -

试图以一种被其禁止的方式访问套接字 访问权限

在解决方案中调用其中一个 web api

httpClient = new HttpClient
            {
                BaseAddress = new Uri("https://localhost:44311/api/")
            };

正在犯错误。

完整的堆栈如下 -

> AggregateException: One or more errors occurred. (An attempt was made to access a socket in a way forbidden by its access permissions)
System.Threading.Tasks.Task<TResult>.GetResultCore(bool waitCompletionNotification)
System.Threading.Tasks.Task<TResult>.get_Result()
StoreFrontWeb.Controllers.HomeController.Index() in HomeController.cs
Microsoft.AspNetCore.Mvc.Internal.ActionMethodExecutor+TaskOfIActionResultExecutor.Execute(IActionResultTypeMapper mapper, ObjectMethodExecutor executor, object controller, object[] arguments)
System.Threading.Tasks.ValueTask<TResult>.get_Result()
Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker.InvokeActionMethodAsync()
Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker.InvokeNextActionFilterAsync()
Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker.Rethrow(ActionExecutedContext context)
Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker.Next(ref State next, ref Scope scope, ref object state, ref bool isCompleted)
Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker.InvokeInnerFilterAsync()
Microsoft.AspNetCore.Mvc.Internal.ResourceInvoker.InvokeNextResourceFilter()
Microsoft.AspNetCore.Mvc.Internal.ResourceInvoker.Rethrow(ResourceExecutedContext context)
Microsoft.AspNetCore.Mvc.Internal.ResourceInvoker.Next(ref State next, ref Scope scope, ref object state, ref bool isCompleted)
Microsoft.AspNetCore.Mvc.Internal.ResourceInvoker.InvokeFilterPipelineAsync()
Microsoft.AspNetCore.Mvc.Internal.ResourceInvoker.InvokeAsync()
Microsoft.AspNetCore.Routing.EndpointMiddleware.Invoke(HttpContext httpContext)
Microsoft.AspNetCore.Routing.EndpointRoutingMiddleware.Invoke(HttpContext httpContext)
Microsoft.AspNetCore.StaticFiles.StaticFileMiddleware.Invoke(HttpContext context)
Microsoft.AspNetCore.Diagnostics.DeveloperExceptionPageMiddleware.Invoke(HttpContext context)

真的很感激任何提示?

【问题讨论】:

  • 好吧,您不能在 Azure 应用服务中的 localhost:44311 上托管 API。这个 URL 很可能应该是 https://appname.azurewebsites.net/api/?

标签: azure asp.net-core .net-core azure-web-app-service asp.net-core-webapi


【解决方案1】:

@juunas 是对的。来自官方文档:

通过互联网访问应用程序的唯一方式是 通过已经暴露的 HTTP (80) 和 HTTPS (443) TCP 端口; 应用程序可能不会在其他端口上侦听来自 互联网。但是,应用程序可能会创建一个套接字,该套接字可以 侦听沙箱内的连接。例如,两个 同一应用程序中的进程可以通过 TCP 相互通信 插座;从沙盒外部传入的连接尝试,尽管 他们在同一台机器上,会失败。请参阅下一个主题 更多细节。

https://github.com/projectkudu/kudu/wiki/Azure-Web-App-sandbox

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-16
    • 2018-05-24
    • 1970-01-01
    • 2022-12-15
    • 1970-01-01
    相关资源
    最近更新 更多