Announcement

Collapse
No announcement yet.

via Webservice auf SQLExpress zugreifen

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • via Webservice auf SQLExpress zugreifen

    Guten Morgen,

    Da ich noch Anfänger im C# Bereich bin, hoffe ich das ich die Begrifflichkeiten nicht durcheinander bringe.

    Ich habe mit vs2010 (c#) einen Webservice und eine Clientanwendung geschrieben. Ich benutze das Entity-Framework 4.0 und habe durch "Code First" meine Datenbank erstellen lassen. D.h. ich habe keinen Einfluß auf die Anmeldung an die Datenbank, Namensgebung der Datenbank oder der Tabellen genommen. Durch die deklaration der Klassen wurde alles automatisch erstellt. Der SQLExpress-Datenbank-Server hat Windows-Authentifizierung. Lokal, auf meinem Rechner funktioniert alles einwandfrei.
    Jetzt habe ich den Webservice auf einen Windows Server 2008- von Strato - in das entsprechende Verzeichnis kopiert und in der Entwicklungsumgebung unter "Dienstverweis konfigurieren" die URL des Webservice angegeben. Wenn ich "Dienstverweis aktualisieren" wähle greife ich auch auf den Webservice auf dem Server zu und nicht mehr auf den lokalen Dienst. Das funktioniert! Für mich bedeutet das erstmal das der Service richtig installiert wurde. (Oder?)
    Starte ich aber mein Programm bekomme ich an dieser Stelle im Webservice

    [highlight=c#]
    var context = new WWSDataContext();

    var user = (from u in context.Users
    where (u.EMail.ToUpper() == EMail.ToUpper()) && (u.PW == pw) && (u.Aktiv == true)
    select u).FirstOrDefault();
    [/highlight]

    (die erste Zeile wird noch ausgeführt es hat auch nichts mit der Abfrage an sich zu tun. Sobald ich auf die DB zugreife bekomme ich diesen Fehler. Und wie schon gesagt: lokal funktioniert es)

    folgende Fehlermeldung:

    System.ServiceModel.FaultException`1 wurde nicht von Benutzercode behandelt.
    Message=An exception occurred while initializing the database. See the InnerException for details.
    Source=mscorlib
    StackTrace:
    Server stack trace:
    bei System.ServiceModel.Channels.ServiceChannel.ThrowI fFaultUnderstood(Message reply, MessageFault fault, String action, MessageVersion version, FaultConverter faultConverter)
    bei System.ServiceModel.Channels.ServiceChannel.Handle Reply(ProxyOperationRuntime operation, ProxyRpc& rpc)
    bei System.ServiceModel.Channels.ServiceChannel.Call(S tring action, Boolean oneway, ProxyOperationRuntime operation, Object[] ins, Object[] outs, TimeSpan timeout)
    bei System.ServiceModel.Channels.ServiceChannelProxy.I nvokeService(IMethodCallMessage methodCall, ProxyOperationRuntime operation)
    bei System.ServiceModel.Channels.ServiceChannelProxy.I nvoke(IMessage message)
    Exception rethrown at [0]:
    bei System.Runtime.Remoting.Proxies.RealProxy.HandleRe turnMessage(IMessage reqMsg, IMessage retMsg)

    usw...

    Ich glaube, dass es sich um ein Rechte-Problem in Bezug auf den SQLExpress auf dem Windowsserver handelt. Um den Webservice gangbar zu machen, habe ich IIS_IUSRS zu den Berechtigungen des Service hinzugefügt. Dieser User ist dem SQLExpress NICHT bekannt und kann ihm auch nicht bekannt gemacht werden. (Ich weiß zumindest nicht wie ich das machen könnte).
    Der SQLExpress-Datenbank-Server auf dem Window-Server hat genau wie mein lokaler SQLExpress Windows-Authentifizierung.

    Ich hoffe ich habe das Problem verständlich beschrieben und mich mit den Begriffen und Bezeichnungen nicht zu sehr blamiert.

    Gruß Thorsten
    Zuletzt editiert von thBordihn; 18.09.2011, 09:03.

  • #2
    Dein ObjectContext hat einen Konstruktor dem du einen Connectionstring mitgeben kannst. Alternativ findest du den benutzten Connectionstring, wenn du den parameterlosen Konstruktor verwendest, in der App.Config deiner Anwendung.

    Am einfachsten wäre wohl wenn du dir einen User in der Datenbank anlegst und diesen dann auch im Connectionstring benutzt.

    Comment

    Working...
    X