【发布时间】:2018-02-24 06:40:44
【问题描述】:
我有一个奇怪的问题。我有一个 .NET Core 应用程序,它在本地机器上运行良好并通过了单元测试。
在应用程序内部,它基本上调用了我们的平台网络服务:
using( WebClient client = new WebClient() )
{
NetworkCredential creds = new NetworkCredential(_userName, _password);
CredentialCache credCache = new CredentialCache();
credCache.Add(new System.Uri(_baseUrl), "Basic", creds);
client.Credentials = credCache;
var url = _baseUrl + "/api/v1/Pricing/Rates";
client.Headers.Add(HttpRequestHeader.ContentType, "application/json");
var request = JsonConvert.SerializeObject(data);
System.Console.Out.WriteLine(request);
var response = client.UploadString(url, request);
var responseObject = JObject.Parse(response);
var products = responseObject["PricingProducts"].Children();
var result = new Dictionary<string, double>();
foreach( var product in products )
{
result.Add(product.Value<string>("LoanProgramName"),
product.Value<double>("Rate"));
}
return result;
}
当我使用 dotnet run 在本地计算机上执行此操作时,一切正常。单元测试也很好用。 App Service 上的日志并没有告诉我太多信息,只是我从平台 Web 服务收到了 403。
ers.RatesController.Get (AlexaRates) with arguments ((null)) - ModelState is Valid
2018-02-24 06:37:44.418 +00:00 [Information] Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker: Executed action AlexaRates.Controllers.RatesController.Get (AlexaRates) in 201.3483ms
2018-02-24 06:37:44.447 +00:00 [Error] Microsoft.AspNetCore.Server.Kestrel: Connection id "0HLBRA4B41EO8", Request id "0HLBRA4B41EO8:00000002": An unhandled exception was thrown by the application.
System.Net.WebException: The remote server returned an error: (403) Forbidden.
at System.Net.HttpWebRequest.GetResponse()
at System.Net.WebClient.GetWebResponse(WebRequest request)
at System.Net.WebClient.DownloadBits(WebRequest request, Stream writeStream)
at System.Net.WebClient.UploadBits(WebRequest request, Stream readStream, Byte[] buffer, Int32 chunkSize, Byte[] header, Byte[] footer)
at System.Net.WebClient.UploadDataInternal(Uri address, String method, Byte[] data, WebRequest& request)
at System.Net.WebClient.UploadString(Uri address, String method, String data)
at Rates.RetrieveLatest() in D:\home\site\repository\AlexaRates\Rates.cs:line 50
at AlexaRates.Controllers.RatesController.Get() in D:\home\site\repository\AlexaRates\Controllers\RatesController.cs:line 22
at lambda_method(Closure , Object , Object[] )
at Microsoft.Exten
有没有人经历过类似的事情?我看到一堆 403 帖子,但它们主要是关于人们调用托管在服务上的 REST API 而不是调用。
【问题讨论】:
-
403 通常意味着您的资源由于达到配额限制而受到限制或停止。请尝试扩展您的应用并重试。
-
您的服务端点是否受到某种授权策略的保护? 403 响应表明您是授权用户(否则您将得到 401),但没有访问请求端点的权限。
-
嗨!谢谢!我刚刚将应用服务计划更新为基本(50 美元/月),结果还是一样。还有其他想法吗?端点可以从我的单元测试中访问。
-
我在 API 上确实有凭据,并且代码是相同的,所以我的假设是它以相同的方式发送红色
标签: azure .net-core azure-web-app-service