我正在尝试使用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指令或程序集引用?)
答案 0 :(得分:0)
您可以将RequireHttpsAttribute.cs
文件放在与App_Code
不同的文件夹中,这是一个特殊的ASP.NET文件夹。然后,您的命名空间导入应该正常运行。如果您的项目是一个网站项目,将其转换为Web应用程序也可能解决问题。
如果您想了解有关该问题的更多信息,建议您查看Type or namespace could not be found from App_code folder。