Web.Api属性未在控制器上显示

时间:2013-09-27 15:56:17

标签: c# asp.net visual-studio-2012 asp.net-web-api

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

1 个答案:

答案 0 :(得分:0)

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

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