web-dev-qa-db-ja.com

OWIN認証マネージャーが要求に関連付けられていません

Web Apiプロジェクトに対してowinおよびAspNet Identityを有効にしようとすると(VS 2013 + .Net 4.5.1)、有効または無効な(コントローラーへの要求なし)要求ごとに次のエラーが表示されます。

<Error>
<Message>An error has occurred.</Message>
<ExceptionMessage>
No OWIN authentication manager is associated with the request.
</ExceptionMessage>
<ExceptionType>System.InvalidOperationException</ExceptionType>
<StackTrace>
at System.Web.Http.Owin.PassiveAuthenticationMessageHandler.SuppressDefaultAuthenticationChallenges(HttpRequestMessage request) at System.Web.Http.Owin.PassiveAuthenticationMessageHandler.<SendAsync>d__0.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.TaskAwaiter`1.GetResult() at System.Web.Http.HttpServer.<SendAsync>d__0.MoveNext()
</StackTrace>
</Error>

デバッグモードで確認したように、例外も処理されません!また、ConfigurationクラスのStartupが呼び出されない(実際にはデバッガーによってキャッチされない)ことに気付きました。スタートアップのコードは次のとおりです。

[Assembly: OwinStartup(typeof(bloob.bloob.Startup))]

namespace bloob.bloob
{
    public partial class Startup
    {
        public void Configuration(IAppBuilder app)
        {
            ConfigureAuth(app);
        }
    }
}
63
Mahmoud Moravej

やっと問題が見つかりました!新しく作成したプロジェクトと行ごとに比較し、違いがないことを確認した後、両方のプロジェクトの参照を確認しました!...すべての問題はパッケージの欠落によるものでした:

Microsoft.Owin.Host.SystemWeb

このパッケージがパッケージのインストールフェーズで見逃される理由はわかりませんが、奇妙な点は、ビルド例外がスローされなかった理由です。またはdll参照エラーはありませんか?

89
Mahmoud Moravej

私はもともと認証付きでプロジェクトを作成しましたが、それを無効にすることにしました。 WebApiConfig.csファイルからこれを削除する必要がありました。認証を有効にする場合は、これがあることを確認してください。

        // Web API configuration and services
        // Configure Web API to use only bearer token authentication.
        config.SuppressDefaultHostAuthentication();
        config.Filters.Add(new HostAuthenticationFilter(OAuthDefaults.AuthenticationType));
92
cal5barton

私の場合、web.configのこの設定以来失敗しました。これが誰かの回避に役立つことを願っています。

<appSettings>
    <add key="owin:AutomaticAppStartup" value="false" />
</appSettings>
8
Vinh Tran

同じ問題がありました。パッケージがNuGetパッケージマネージャーに表示されませんでした。 packages.configに参照を追加しました:

 <package id="Microsoft.Owin.Host.SystemWeb" version="2.1.0" targetFramework="net45" />

プロジェクトファイル(xxx.csproj)での参照:

 <Reference Include="Microsoft.Owin.Host.SystemWeb">
  <HintPath>..\packages\Microsoft.Owin.Host.SystemWeb.2.1.0\lib\net45\Microsoft.Owin.Host.SystemWeb.dll</HintPath>
</Reference>
4

実際にOWINが必要ない場合は、単にアンインストールできます。

これを行う1つの方法は、Nuget ManagerですべてのOWINライブラリをアンインストールすることです。順序は依存関係によって決まります。

これが完了したら、OWIN関連のコードや設定は必要ありません。私はWindows認証を使用しているので、これは私にとって最もうまくいきました。

3
Sonic Soul

Web.configでowin:AutomaticAppStartupキーをtrueに変更すると、これが修正されました。つまり、次のように変更します。

<appSettings>
    <add key="owin:AutomaticAppStartup" value="false" />
</appSettings>

これに:

<appSettings>
    <add key="owin:AutomaticAppStartup" value="true" />
</appSettings>
1
tomRedox