我正在尝试使用 Mike Wallace 的“RequireHttps”属性来强制某些控制器是否需要 SSL。
我有下面的代码,它构建得很好。但是当我真正去向控制器添加属性时,它失败了。
我还有其他出现的自定义属性,而我还有另一个没有出现的自定义属性。所以这可能是一个项目问题,虽然我尝试了一个新项目,但它仍然失败。代码位于 app_code 文件夹中。
using System;
using System.Net.Http;
using System.Web.Http.Filters;
using System.Web.Http.Controllers;
namespace WebAPIService
{
public class RequireHttpsAttribute : AuthorizationFilterAttribute
{
public RequireHttpsAttribute();
public override void OnAuthorization(HttpActionContext actionContext)
{
if (actionContext.Request.RequestUri.Scheme != Uri.UriSchemeHttps)
{
actionContext.Response = new HttpResponseMessage(System.Net.HttpStatusCode.Forbidden)
{
ReasonPhrase = "HTTPS Required"
};
}
else
{
base.OnAuthorization(actionContext);
}
}
}
}
欢迎任何建议。谢谢。
编辑:
我在 API 控制器上遇到的错误是: 找不到类型或命名空间名称“RequireHttpsAttribute”(您是否缺少 using 指令或程序集引用?)