Как отключить проверку подлинности Windows для WEB API в приложении ASP.NET MVC 3

У меня есть приложение ASP.NET MVC 3 с аутентификацией Windows. Теперь я добавил к нему 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="&lt;,&gt;,*,:,&amp;,\" />
    <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, запрос выполняется успешно.

Итак, как я могу отключить проверку подлинности Windows для моего веб-API? заранее спасибо.

2 ответа

Мне удалось исправить это в свойствах моего проекта MVC и включить анонимную аутентификацию.

Чтобы отключить аутентификацию, вы можете перейти к launchSettings.json или просто ввести «anonymous» в поле ввода поиска.

В верхней части файла вы найдете «anonymousAuthentication», для которого вам нужно будет установить значение true.

Позже вы всегда можете снова переключиться на false.

Другие вопросы по тегам