3
votes

SqlException: la connexion a échoué pour l'utilisateur «». sur l'application ASP.NET CORE 1.0.1 dans IIS 8

Je suis en train de configurer un ASP.NET CORE 1.0.1 dans un environnement Windows 2012 R2 sur IIS 8. L'application se connecte à une base de données SQL et a une chaîne de connexion dans le fichier application.json (info modifiée):

<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>

Dans IIS, j'ai configuré l'application et le pool d'applications a été configuré pour s'exécuter en tant qu'un certain utilisateur (par exemple, société \ sqluser). J'ai vérifié que la société \ sqluser a un accès en lecture / écriture à la base de données. Les paramètres avancés du pool d'applications se présentent ainsi:

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

Lorsque j'exécute l'application, j'obtiens le message d'erreur SQL suivant:

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


1 commentaires

Selon votre description, je vous suggère d'essayer de suivre ci-dessous article pour savoir comment utiliser le domaine AD avec le pool d'applications IIS pour accéder à la base de données SQL.


3 Réponses :


3
votes

Essayez Integrated Security = true au lieu de Trusted_Connection = True dans votre chaîne de connexion.

Integrated Security = true est la syntaxe de System.Data.SqlClient, tandis que Trusted_Connection = true est la syntaxe d'ODBC.

Voir https://docs.microsoft.com/en-us/dotnet/api/system.data.sqlclient.sqlconnection.connectionstring?view=netcore-1.0 et https://docs.microsoft.com/en-us/dotnet/framework/data/adonet/ syntaxe de chaîne de connexion


1 commentaires

Cela n'a pas fonctionné non plus. Je reçois toujours la même erreur.



0
votes

Vous pouvez essayer de configurer l'authentification Windows. Dans IIS, assurez-vous que le module d'authentification Windows est ajouté et activé.

Vous devez également vous assurer que le pool d'applications est exécuté sous le compte de domaine et non sous le compte local.

Dans ASP.net, nous faisons généralement comme ceci:

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

Dans le noyau d'Asp.net, cette méthode fonctionne généralement:

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


1 commentaires

Salut Gauravsa, j'ai essayé d'ajouter le mode d'authentification en tant que Windows dans le fichier web.config et de désactiver l'authentification anonyme. Cela n'a pas fonctionné non plus.



1
votes

Comme je ne suis pas le développeur de l'application, je ne savais pas que le développeur avait écrasé la chaîne de connexion dans le code au lieu d'utiliser le fichier appsettings.json. Ce qui manquait était le suivant:

Trusted_Connection=True;

Une fois que j'ai supprimé le code qui remplaçait la chaîne de connexion et que je me suis assuré que Trusted_Connection était défini sur True dans les paramètres de l'application, l'application fonctionnait.


0 commentaires