Windows 認証を使用する ASP.NET MVC 3 アプリケーションがあります。これで、Web API (nuget パッケージ) を追加し、匿名アクセスが必要になりました (後で API キーを追加します)。しかし、私はそれを機能させることができませんでした。
すべての Web API コントローラーは「/api」パスの下にあり、いずれも Authorize 属性を持っていません。
これが私の現在のweb.configです(この問題に関係のないすべてのビットとピースを削除しました):
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<system.web>
<authentication mode="Windows" />
<httpRuntime maxRequestLength="102400" requestPathInvalidCharacters="<,>,*,:,&,\" />
<authorization>
<deny users="?" />
</authorization>
<roleManager enabled="true" defaultProvider="AspNetSqlRoleProvider">
<providers>
<clear />
<add name="AspNetSqlRoleProvider" type="System.Web.Security.SqlRoleProvider" connectionStringName="..." applicationName="..." />
</providers>
</roleManager>
<profile enabled="false" defaultProvider="AspNetProfileProvider">
<providers>
<clear />
<add name="AspNetProfileProvider" type="System.Web.Profile.SqlProfileProvider" connectionStringName="..." applicationName="..." />
</providers>
<properties></properties>
</profile>
<customErrors mode="RemoteOnly" defaultRedirect="~/Error/Generic">
<error statusCode="404" redirect="~/Error/NotFound" />
<error statusCode="403" redirect="~/Error/AccessDenied" />
</customErrors>
</system.web>
<system.webServer>
<validation validateIntegratedModeConfiguration="false" />
<security>
<requestFiltering allowDoubleEscaping="true"></requestFiltering>
</security>
</system.webServer>
<location path="Error">
<system.web>
<authorization>
<allow users="*" />
</authorization>
</system.web>
</location>
<location path="Scripts">
<system.web>
<authorization>
<allow users="*" />
</authorization>
</system.web>
</location>
<location path="Content">
<system.web>
<authorization>
<allow users="*" />
</authorization>
</system.web>
</location>
<location path="api">
<system.web>
<authorization>
<allow users="*" />
</authorization>
</system.web>
</location>
</configuration>
すべてのリクエストで「HTTP エラー 401.2 - 権限がありません」が表示されますが、有効な Windows 資格情報を入力すると、リクエストが正常に実行されます。
では、WEB API の Windows 認証を無効にするにはどうすればよいでしょうか? 前もって感謝します。