1. ホーム

HTTPエラー401.0 - Unauthorizedの解決方法

2022-03-16 20:36:37



私のプロジェクトが突然このエラーを報告しました.



HTTPエラー 401.0 - 認証されていません。

あなたはこのディレクトリまたはページを表示する権限を持っていません。

<フィールドセット

最も可能性の高い原因

  • 認証されたユーザーが、リクエストを処理するために必要なリソースにアクセスできない。
<フィールドセット

試してみたいアクション

  • このエラーの詳細については、失敗したリクエストのトレースログをご覧ください。詳細については、以下をクリックしてください。 こちら .
<フィールドセット

詳細なエラーメッセージです。

<テーブル モジュール    ManagedPipelineHandler お知らせ    ExecuteRequestHandler ハンドラ    System.Web.Mvc.MvcHandler エラーコード    0x00000000
<テーブル リクエストのURL    http://localhost:46648/JiMu/Index/Login?ReturnUrl=%2fJiMu%2fIndex%2fLogin%3freturnUrl%3d%252fJiMu%252fIndex%252fLogin& returnUrl=%2fJiMu%2fIndex%2fLogin 物理パス    F:\Project/Block Management System V2.0 Login ログイン方法    匿名 ログインユーザ    匿名希望 リクエスト追跡用ディレクトリ    C:♪UsersYueYue ♪Documents ♪IISExpress ♪TraceLogFiles ♪WEB
<フィールドセット

詳細はこちら

これは、IISが返す一般的なアクセス拒否エラーです。通常、このエラーには、サーバーがリクエストを拒否した理由を説明するサブステータス コードが関連付けられています。このエラーに関連するサブステータスコードがあるかどうかを判断するには、IIS ログファイルを確認してください。

詳細情報を見る "

Microsoft Knowledge Baseの記事です。

  • 907273




フォルダパーミッションを使う方法をずっと探していました。ディスク全体にはEveryone権限を、フォルダにはEveryone権限を割り当てています。

しかし、ログインユーザーが匿名であるというエラーメッセージが表示され、グループポリシーで匿名ユーザーにEveryone権限を適用しています。つまり、システムは匿名ユーザーをEveryoneのグループのメンバーとして扱っているのです。

理論的には、ファイルシステム上のパーミッションの問題はなくなりました。

しかし、まだ次のようなエラーが報告されます。エラーページは非常に専門的で、一見するとiisシステムエラーのように見えます。

401.0の説明書もWeb上にはありません。

401.1 

401.2

401.3

401.4

の説明書、401.0に関するものはほんの一部です。結果はまだ正しくありません。

仕方なく、その中の記事を探しました。プロジェクトのプロパティ(プロパティページではありません)でwindows認証を有効にすると書いてあり、うまくいきました。

プロパティページの開き方は、右クリックで開きます。   プロジェクト選択後、直接プロパティウィンドウになります。プロパティウィンドウ(右下)は自動的に表示されます。













私も死語を意識してやってみました。





奇跡的にvs2010のデバッガが応答しています。例外が発生しました。その例外は、クラス :



public class UserAuthorizeAttribute : AuthorizeAttribute 

中のAuthorizeCoreメソッド。分解してみました。

このメソッドは、ユーザーがログインしていることを確認するためのフィルターです。

トレースをデバッグしたところ、そのようになりました。 



ログインユーザー名はシステムユーザー名です。

このユーザー名は、ウィンドウズ・システムに固有のものです。  (ウィンドウ認証を有効にすると、ウィンドウの自動ログインの仕組みがとられてしまいます。これは確かに私たちが望むものではありません)。



その後、再度windows認証をOFFにしました。



ログインユーザー名が空になっていることを発見。コードはfalseを返します。 

冒頭のエラーが返ってくる。

つまり、この例外です。AuthorizeCore メソッドから返される結果と関係があります。

またバイドゥか。 AuthorizeCoreというメソッドは何をするのか。  (説明すると、このコードは他の人が書いたものです。ウェブ上でオープンソースになっている)

この記事

http://www.tuicool.com/articles/yuUzeq



AuthorizeCore このメソッドは直接 false を返しますが、後で web.config にジャンプします。


<system.web>
   <authentication mode="Forms">
      <forms loginUrl="~/Account/Login" timeout="2880" />
    </authentication>
</system.web>

loginurlで指定されたurlです。



私の設定は <forms loginUrl="~/JiMu/Index/Login" です。

そこで、この動作になったかどうか、デバッグを開始しました。

URL /JiMu/Index/Loginを入力します。



その結果、まずAuthorizeCoreというメソッドを入力し、falseを返すとエラーになります。

まで行かない。 JiMu/Index/Loginのメソッドです。

と思って、ログインページに行こうとすると. ログインしているので、AuthorizeCoreの認証メソッドに行くことができないのです。

ログインパスのバリデーションを全てスキップする必要があります。そうしないと、デッドループになります。ユーザーはログインできません...



ここで、ふと思い出したのです。

以前、, [AllowAnonymous]タグを削除したことがあるような気がします。

戻ってコードを確認しました。自分を呪いたくなるほどだ...

AllowAnonymous]属性を削除したのですが・・・。この属性を削除した後は、自動的に AuthorizeCore関数

        [HttpPost]
        [AllowAnonymous]
        public ActionResult Login(LoginModel item, string RedirectTo)
        {
           ///.....
        }



401.0というエラーが・・・。いろいろ回って勉強したのですが、結局は自分の手によって引き起こされた問題でした・・・。

もしこの記事があなたの役に立つのであれば、バン・マネーをください。以下はペイパル番号です。 [email protected]







ここ数日、私のコンフィギュレーションを聞かれることがあります。投稿しておきます。

<?xml version="1.0" encoding="utf-8"? >
<! --
  For more information on how to configure your ASP.NET application, please visit
  http://go.microsoft.com/fwlink/?LinkId=169433
  -->
<configuration>
  <configSections>
    <sectionGroup name="elmah">
      <section name="security" requirePermission="false" type="Elmah.SecuritySectionHandler, Elmah" />
      <section name="errorLog" requirePermission="false" type="Elmah.ErrorLogSectionHandler, Elmah" />
      <section name="errorMail" requirePermission="false" type="Elmah.ErrorMailSectionHandler, Elmah" />
      <section name="errorFilter" requirePermission="false" type="Elmah.ErrorFilterSectionHandler, Elmah" /& gt;
    </sectionGroup>
    <section name="EntityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=5.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
  </configSections>
  <connectionStrings>
  </connectionStrings>
  <appSettings>
    <add key="webpages:Version" value="2.0.0.0" />
    <add key="webpages:Enabled" value="false" />
    <add key="PreserveLoginUrl" value="true" />
    <add key="ClientValidationEnabled" value="true" />
    <add key="UnobtrusiveJavaScriptEnabled" value="true" />
  </appSettings>
  <! --
    For instructions on changing web.config for .NET 4.5, see http://go.microsoft.com/fwlink/?LinkId=235367.

    The following features can be set on the <httpRuntime> tag.
      <system.