我使用的课程非常有趣,但我遇到了一些问题。
http://www.asp.net/web-api/overview/security/individual-accounts-in-web-api
我收到证书错误但我明白为什么会出现此问题。此证书应连接到我的计算机名称。我不明白他如何生成此证书以及如何编辑此问题。
这是重要的代码。用证书名称解决这个问题需要做些什么?
using System;
using System.Net;
using System.Net.Http;
using System.Web.Http.Controllers;
using System.Web.Http.Filters;
namespace LocalAccountsApp.Filters
{
public class RequireHttpsAttribute : AuthorizationFilterAttribute
{
public int Port { get; set; }
public RequireHttpsAttribute()
{
Port = 443;
}
public override void OnAuthorization(HttpActionContext actionContext)
{
var request = actionContext.Request;
if (request.RequestUri.Scheme != Uri.UriSchemeHttps)
{
var response = new HttpResponseMessage();
if (request.Method == HttpMethod.Get || request.Method == HttpMethod.Head)
{
var uri = new UriBuilder(request.RequestUri);
uri.Scheme = Uri.UriSchemeHttps;
uri.Port = this.Port;
response.StatusCode = HttpStatusCode.Found;
response.Headers.Location = uri.Uri;
}
else
{
response.StatusCode = HttpStatusCode.Forbidden;
}
actionContext.Response = response;
}
else
{
base.OnAuthorization(actionContext);
}
}
}
}
答案 0 :(得分:5)
该错误是正确的。您使用的证书由域localhost
自行签名。由于它没有由受信任的证书根(例如Verisign)签名,因此您的浏览器会警告您证书无效,因此网站可能是非法的。
错误不应该导致功能问题,当您部署到生产环境时,您应该获得为您要部署到的域签名的可信证书。
您不会让任何人为域localhost
签署证书,但如果错误困扰您,您可以将您使用的证书添加到受信任的根列表中使用MMC的证书,如this TechNet article。