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 コントローラーで表示されるエラー: The type or namespace name 'RequireHttpsAttribute' could not be found (using ディレクティブまたはアセンブリ参照がありませんか?)

4

1 に答える 1

0

特別な ASP.NET フォルダーである とはRequireHttpsAttribute.cs別のフォルダーにファイルを置くことができます。App_Code名前空間のインポートは正しく機能するはずです。プロジェクトが Web サイト プロジェクトである場合は、それを Web アプリに変換することで問題が解決する場合もあります。

この問題について詳しく知りたい場合は、「Type or namespace could not be found from App_code folder 」をご覧になることをお勧めします。

于 2013-09-28T12:39:53.143 に答える