我有一个带有 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 Error 401.2 - Unauthorized”,但是当我输入一些有效的 Windows 凭据时,请求就会成功执行。
那么,如何禁用我的 WEB API 的 Windows 身份验证?提前致谢。