Laden...

Wo gebe ich im Connectionstring den Zugriffsbenutzer an?

Erstellt von MoMa91 vor 6 Jahren Letzter Beitrag vor 6 Jahren 2.383 Views
M
MoMa91 Themenstarter:in
49 Beiträge seit 2017
vor 6 Jahren
Wo gebe ich im Connectionstring den Zugriffsbenutzer an?

verwendetes Datenbanksystem: SQL Server 2014

Hätte eine Frage, und zwar bekomme ich beim publishen meiner Website eine Fehlermeldung: > Fehlermeldung:

An error occured while processing your request.

Ich denke das ist darauf zurückzuführen, dass mit dem falschen Benutzer versucht wird auf die DB zuzugreifen. Jetzt ist meine Frage wo ich Passwort und Benutzer im Connectionstring angebe, um immer mit diesem Benutzer zuzugreifen?

16.834 Beiträge seit 2008
vor 6 Jahren

Vollständig Exception wäre hilfreich. So ist der Fehler reines Glaskugelschauen.

1.029 Beiträge seit 2010
vor 6 Jahren

Hi,

naja - du gibst nun echt zu wenig Input.

Aber: Unter der Vermutung, dass du den IIS einsetzt - wird hier vermutlich dein IIS-User eingesetzt. Sofern du für die Website einen eigenen Pool und einen eigenen User hast (wie's sich gehört) - solltest du diesem lieber die nötigen Rechte geben als was im ConnectionString zu machen.

LG

M
MoMa91 Themenstarter:in
49 Beiträge seit 2017
vor 6 Jahren

@Taipi88

Ja das stimmt, ich habe eben nirgends etwas angegeben und dadurch wird der standardbenutzer des IIS verwendet.

Es gibt für den Datenzugriff eben einen neu angelegten Sysuser mit dem auf die Daten zugegriffen werden soll.

Nur weis ich eben nicht wie ich das mache, dass dann immer mit diesem auf die Daten zugegriffen wird??

Meine Vermutung war eben irgendwas im App.Config in meinem .DataAccess Project? oder doch im .Web Project?

Sry für die ungenaue Beschreibung.

1.029 Beiträge seit 2010
vor 6 Jahren

Hi,

naja - wie dein ConnectionString aussehen muss kannst du z.B. auf folgender Seite gucken:
https://www.connectionstrings.com/sql-server-2012/

Was deine App.Config angeht - Es gibt immer nur eine - für ASP.NET heisst das allerdings Web.config. (heisst: nimm die Web.Config deines letztendlich zu startenden Projekts)

Innerhalb dieser Web.Config - musst du entsprechende Eintragungen machen - wie die aussehen - können wir nicht wissen.

Üblicherweise enthält dein .DataAccess-Projekt allerdings wahrscheinlich eine App.config, an deren Beispiel du dich langhangeln kannst.

Dazu gehört: Das definieren einer entsprechenden Section, wie z.B.:

<section name="EasySoftener.Wcf.Properties.Settings" type="System.Configuration.ClientSettingsSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />

Und dann entsprechende Einträge für die Section:

<applicationSettings>
    <EasySoftener.Wcf.Properties.Settings>
      <setting name="SmtpUser" serializeAs="String">
        <value>...</value>
      </setting>

LG

16.834 Beiträge seit 2008
vor 6 Jahren

Wenn Impersonation funktioniert - und Du direkten IIS Zugriff hast - dann einfach im IIS einen eigenen AppPool erzeugen, dort den User hinterlegen und der Anwendung den AppPool zuweisen.

M
MoMa91 Themenstarter:in
49 Beiträge seit 2017
vor 6 Jahren

Danke für die Schnelle Antwort,
habe deine Seite gesehen, jedoch habe ich einen connectionString der wie folgt aussieht:

<add name="monitoringEntities" connectionString="metadata=res://*/DashboardModel.csdl|res://*/DashboardModel.ssdl|res://*/DashboardModel.msl;provider=System.Data.SqlClient;provider connection string=&quot;data source=LAGDBTEDMS;initial catalog=monitoring;integrated security=True;MultipleActiveResultSets=True;App=EntityFramework&quot;" providerName="System.Data.EntityClient" />

wüsste echt nicht wo ich da Servername, User Id, und Passwort hinschreibe?
und für was brauche ich dann noch section?

bzw sieht das bei mir so aus:

<section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
M
MoMa91 Themenstarter:in
49 Beiträge seit 2017
vor 6 Jahren

habe leider keinen IIS Zugriff 😦

16.834 Beiträge seit 2008
vor 6 Jahren

Das obere Beispiel ist EF mit Database First. Dein Connection String ist vermutlich mit Code First (POCOs).
Die Section ist aber nicht Dein ConnectionString.
Du musst noch irgendwo die Definition haben, auf welchen SQL SErver Du gehst. Wenn Du die Standardtemplates verwendest, dann ganz unten unter "<EntityFramework>"

M
MoMa91 Themenstarter:in
49 Beiträge seit 2017
vor 6 Jahren

das steht noch unten unter entityFramework:

 <entityFramework>
    <defaultConnectionFactory type="System.Data.Entity.Infrastructure.LocalDbConnectionFactory, EntityFramework">
      <parameters>
        <parameter value="mssqllocaldb" />
      </parameters>
    </defaultConnectionFactory>
    <providers>
      <provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
    </providers>
  </entityFramework>

der Server steht schon in dem <add Tag (source=LAGDBTEDMS => Server und catalog=Monitoring => DB)

16.834 Beiträge seit 2008
vor 6 Jahren

Du hast jetzt aber noch kein Add-Tag von Dir gezeigt, oder finde ich den in diesem Thread nicht?!

D
985 Beiträge seit 2014
vor 6 Jahren

Doch, hatta

<add name="monitoringEntities" connectionString="metadata=res://*/DashboardModel.csdl|res://*/DashboardModel.ssdl|res://*/DashboardModel.msl;provider=System.Data.SqlClient;provider connection string=&quot;data source=LAGDBTEDMS;initial catalog=monitoring;integrated security=True;MultipleActiveResultSets=True;App=EntityFramework&quot;" providerName="System.Data.EntityClient" />
16.834 Beiträge seit 2008
vor 6 Jahren

Ach, der DbFirst String.

Dann Integrated Security raus nehmen (oder auf False setzen), weil das sonst den aktuellen Windows Account nimmt.
Anschließend User ID=myUsername;Password=myPassword; mitgeben.

Der tatsächliche ConnectionString ist hier zwischen den beiden &quot;
Alles andere ist EF Core DBFirst Overhead. Hier gehört auch der SQL ConnectionString rein, der sich dann zB nicht mehr von www.connectionstrings.com unterscheidet.

M
MoMa91 Themenstarter:in
49 Beiträge seit 2017
vor 6 Jahren

Habe das jetzt ausprobiert und mein Connectionstring zwischen den &quot sieht wie folgt aus:

data source=LAGDBTEDMS;initial catalog=monitoring;integrated security=False;User Id=sys_lsn_iem_dashboard;Password=myPassword;MultipleActiveResultSets=True;App=EntityFramework

brauche ich da bei dem Benutzer auch das @Firma.at?
habe es mit probiert und es funktionierte auch nicht. kann es sein, dass ich Domäne/sys_lsn_iem_dashboard oder so schreiben muss?
bekomme jetzt immer eine

Fehlermeldung:
EntityException was not handled by user code

Additional Information: The underlying provider failed on Open.

also anscheinend mache ich noch irgendetwas falsch?

M
MoMa91 Themenstarter:in
49 Beiträge seit 2017
vor 6 Jahren

ok, beim Debuggen sehe ich jetzt in der inner exception: Login failed.

Dasselbe Problem besteht auch wenn ich die Benutzerdaten meines Standardusers eingebe, mit dem ich bis jetzt beim Entwickeln immer automatisch zugegriffen habe, d. h., dass ich etwas mit den Benutzerdaten falsch eingebe vermute ich.

3.825 Beiträge seit 2006
vor 6 Jahren

Probiere zuerst Dich mit dem SQL Management Studio mit User und Kennwort einzuloggen. Dann mit Connectionstring.

Grüße Bernd

Workshop : Datenbanken mit ADO.NET
Xamarin Mobile App : Finderwille Einsatz App
Unternehmenssoftware : Quasar-3