【问题标题】:Web.Api Attribute Not Showing on ControllerWeb.Api 属性未显示在控制器上
【发布时间】:2013-09-27 15:56:16
【问题描述】:

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

【问题讨论】:

  • 它失败的错误是?
  • 找不到类型或命名空间名称“RequireHttpsAttribute”(您是否缺少 using 指令或程序集引用?)
  • 您是否将WebAPIService 包含在使用RequireHttpsAttribute 的代码文件中?
  • 是的,我已经添加了。 WebAPIService 实际上是项目的名称,所以无论如何都不需要

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


【解决方案1】:

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

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

【讨论】:

  • 感谢您的帮助。我将项目转换为链接建议的网络应用程序,然后不得不在另一个目录中重新创建我的文件。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-03-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-06-25
  • 2020-08-07
相关资源
最近更新 更多