SqlException: сбой входа для пользователя ''.в приложении ASP.NET CORE 1.0.1 в IIS 8 - PullRequest
0 голосов
/ 13 февраля 2019

Я устанавливаю ASP.NET CORE 1.0.1 в среде Windows 2012 R2 на IIS 8. Приложение подключается к базе данных SQL и имеет строку подключения в файле application.json (информация изменена):

"ConnectionStrings": {
    "Database": "Data Source=qadb;Initial Catalog=companydb;Trusted_Connection=True"
},

В IIS я настроил приложение, и пул приложений был настроен для запуска от имени определенного пользователя (например, company \ sqluser).Я проверил, что компания \ sqluser имеет доступ на чтение / запись к базе данных.Расширенные настройки для пула приложений выглядят так:

.NET CLR Version: No Managed Code
Enable 32-bit Application: False
Managed Pipeline Mode: Integrated
Identity: company\sqluser

Когда я запускаю приложение, я получаю следующее сообщение об ошибке SQL:

System.Data.SqlClient.SqlException: Login failed for user ''.

Я хочу получить приложениеподключитесь к БД как компания \ sqluser, но по какой-то причине не похоже, что она может это сделать.Я также попытался запустить пул приложений как личную учетную запись пользователя, у которого есть права администратора для базы данных SQL, и все еще получаю сообщение об ошибке.

Я пропустил определенную конфигурацию?

РЕДАКТИРОВАТЬ: МойФайл web.config выглядит следующим образом:

<system.web>
    <authentication mode="Windows"/>
 </system.web>
  <system.webServer>
    <handlers>
      <add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModule" resourceType="Unspecified" />
    </handlers>
    <aspNetCore processPath="dotnet" arguments=".\CompanyApp.dll" stdoutLogEnabled="false" stdoutLogFile=".\logs\stdout" forwardWindowsAuthToken="true">
        <environmentVariables>
            <environmentVariable name="ASPNETCORE_ENVIRONMENT" value="Development" />
        </environmentVariables>
    </aspNetCore>
      <rewrite>
          <rules>
              <rule name="HTTP to HTTPS" enabled="true" patternSyntax="Wildcard" stopProcessing="true">
              <match url="*" /><conditions><add input="{HTTPS}" pattern="off" />
              </conditions><action type="Redirect" url="https://{HTTP_HOST}{REQUEST_URI}" redirectType="Found" />
              </rule>
          </rules>
      </rewrite>
  </system.webServer>
</configuration>

Ответы [ 3 ]

0 голосов
/ 13 февраля 2019

Вы можете попробовать установить аутентификацию Windows.В IIS убедитесь, что модуль проверки подлинности Windows добавлен и включен.

Кроме того, необходимо убедиться, что пул приложений работает под учетной записью домена, а не локальной учетной записью.

В ASP.net мы обычно делаем так:

<system.web>
    <authentication mode="Windows"/>
 </system.web>

В ядре Asp.net этот способ обычно работает:

https://docs.microsoft.com/en-us/aspnet/core/security/authentication/windowsauth?view=aspnetcore-2.2&tabs=visual-studio

0 голосов
/ 13 февраля 2019

Поскольку я не являюсь разработчиком приложения, я не осознавал, что разработчик переписал строку подключения в коде вместо использования файла appsettings.json.Чего не хватало:

Trusted_Connection=True;

Как только я удалил код, который перезаписал строку подключения и убедился, что для Trusted_Connection было установлено значение True в настройках приложения, приложение работало.

0 голосов
/ 13 февраля 2019

Попробуйте Integrated Security=true вместо Trusted_Connection=True в строке подключения.

Integrated Security=true - это синтаксис для System.Data.SqlClient, а Trusted_Connection=true - это синтаксис для ODBC.

См. https://docs.microsoft.com/en-us/dotnet/api/system.data.sqlclient.sqlconnection.connectionstring?view=netcore-1.0 и https://docs.microsoft.com/en-us/dotnet/framework/data/adonet/connection-string-syntax

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...