0

我正在尝试使用 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 指令或程序集引用?)

4

1 回答 1

0

您可以将RequireHttpsAttribute.cs文件放在与 不同的文件夹中App_Code,这是一个特殊的 ASP.NET 文件夹。那么,您的命名空间导入应该可以正常工作。如果您的项目是网站项目,将其转换为 Web 应用程序也可能会解决问题。

如果您想了解有关此问题的更多信息,我建议您查看Type or namespace could not found from App_code folder

于 2013-09-28T12:39:53.143 回答