[英]Access denied to ASP.NET WebAPI on IIS
我必須使用ASP.NET應用程序:一個是Web API,另一個是向第一個發出請求的MVC。
Everthing可以在開發中工作(使用IIS Express的VS),但是現在我將這兩個應用程序都發布到了生產服務器上,而我無法使用MVC應用程序訪問api。
我在API上啟用了CORS:
var cors = new EnableCorsAttribute("*", "*", "*");
config.EnableCors(cors);
在MVC應用程序上,我的api基本URL設置為https:// localhost:44351 / ,然后在IIS中,我具有以下綁定(WEB Api站點):
我可以用郵遞員向API發出請求,但是當我運行MVC應用程序時,我無法發出請求(同樣,我可以在開發中發出請求)。
謝謝。
編輯
控制器代碼示例(MVC):
try
{
var client = WebApiHttpClient.GetClient();
var response = await client.PostAsync("Token", content);
if (response.IsSuccessStatusCode)
{
TokenResponse tokenResponse =
await response.Content.ReadAsAsync<TokenResponse>();
WebApiHttpClient.storeToken(tokenResponse);
return RedirectToAction("Index", "Home");
}
else
{
return Content("response.StatusCode);
}
}
catch
{
return Content("Error");
}
我的HttpClient實現:
public const string WebApiBaseAddress = "https://localhost:44351/";
public static HttpClient GetClient()
{
HttpClient client = new HttpClient();
client.BaseAddress = new Uri(WebApiBaseAddress);
client.DefaultRequestHeaders.Accept.Clear();
client.DefaultRequestHeaders.Accept.Add(new
MediaTypeWithQualityHeaderValue("application/json"));
return client;
}
編輯2
InnerException消息:
the underlying connection was closed could not establish trust relationship for the ssl/tls
只是為了總結評論中的討論。 該問題是由於在IIS中為Web API應用程序使用了自簽名證書。
臨時解決此問題的方法是在應用程序啟動類(Global.asax)中添加以下代碼行:
ServicePointManager.ServerCertificateValidationCallback = ((sender, certificate, chain, sslPolicyErrors) => true);
當然,您不應在生產中使用該行代碼。 在生產環境中,您應該具有有效的SSL證書。
可以在這篇文章中找到更多信息: 無法建立SSL / TLS安全通道的信任關系-SOAP
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.