我有一个奇怪的问题。我有一个.NET Core App,可以在本地机器上正常工作并通过单元测试。
在应用程序内部,它基本上称为我们的平台Web服务:
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在本地计算机上执行此操作时,一切正常。单元测试也很有效。除了我从平台Web服务获得403之外,App Service上的日志并没有告诉我什么。
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而不是呼叫。
答案 0 :(得分:1)
403禁止错误通常意味着服务器理解请求但拒绝授权。
403禁止错误的原因
403错误几乎总是由您尝试访问无权访问的内容引起的。
答案 1 :(得分:0)
尝试添加标头并执行各种其他操作后,最终结果是相同的 - 我在调用Web服务时遇到403错误。
解决方案是从Web App转换为VM,并使用旧的学校设置在那里部署应用程序。该应用程序在那里工作。
答案 2 :(得分:0)
我的解决方法是,我意识到我们的基础架构人员在azure应用程序上添加了IP限制。这就是该应用以403反弹的原因。
我删除了“网络”->“访问限制”页面上的IP限制。