2012-04-01 6 views
0

Dies ist mein Code:LINQ to SQL funktioniert nur im Debug-Modus?

DataClassesDataContext data = new DataClassesDataContext(); 
var hey = from p in data.Provas 
      select p; 
Response.Write(hey.First().title_it); 

, wenn ich dieses Spiel Start in Visual Studio öffne, wird es http://localhost:51180/Website1/ und ich den Wert von DB genommen zu bekommen.

Aber, wenn ich die Website mit http://localhost:8080/ öffnen (die in der Regel ich mit diesem öffnen) erhalte ich:

System.Data.SqlClient.SqlException: Cannot open database "Website1" requested by the login. The login failed. 

Anmeldung für den Benutzer 'IIS AppPool \ Website1' ist fehlgeschlagen.

Wie kann ich Einstellungen vornehmen? IIS-Problem?

+2

brauchen werden hinzufügen Die Nachricht teilt Ihnen den genauen Grund mit. Hast du es gelesen? – usr

+0

Aber warum funktioniert es im Debug-Modus? Das bedeutet, dass die Anmeldung nicht fehlschlägt .... auch weil ich DB von Visual Studio mit LINQ to SQL-Klasse verwalten kann ... – markzzz

+0

http://msdn.microsoft.com/en-us/library/aa266913(v= vs.60) .aspx –

Antwort

3

Als @usr wies darauf hin ist die Antwort vor dir.

Wenn Sie die Anwendung im Debugmodus Visual Studio ausführen, ist der Benutzer mit der Datenbank verbunden der Benutzer am PC angemeldet und Visual Studio ausgeführt - das ist seltsam, dass dieser Benutzer (Sie!) Ein Administrator ist und Administratorrechte hat mit SQL Server (ich nehme eine lokale Instanz an).

Wenn Sie die App über die lokale Installation von IIS ausgeführt werden (die es vernünftig anzunehmen ist, ist die Vollversion, ausdrücklich nicht) dann, wenn Sie den App-Pool für die Anwendung zu ändern, wird es als lokales System ausgeführt werden, Benutzer (im Moment vergesse ich, welche, Sie können den App-Pool sehen, um zu sehen) und standardmäßig hat dieser Benutzer keinen Zugriff auf die Datenbanken in SQL Server.

Um dies zu beheben müssen Sie eines von zwei Dingen tun entweder: a) Ändern Sie den Benutzer in der App-Pool ein, die Rechte an der Datenbank in SQL Server hat (wenn Sie gute Praxis wollen, dann sollten Sie eine explizite definieren Benutzer) b) die entsprechenden Rechte an das entsprechenden Systemkonto Erteilen die Datenbank

(Beachten Sie, dass in beiden Fällen für den Zugriff Sie den Benutzer mithilfe von SQL Server Management Studio oder gleichwertig)

+0

Ich denke, ich muss diese App-Pool-Verbindungszeichenfolge ändern. Ich sehe es in web.config, richtig? Tatsächliche ist '': wie kann ich es ändern? – markzzz

+0

Gelöst, ändern LocalSystem in der erweiterten Option im App-Pool, nach diesem http://StackOverflow.com/questions/7698286/login-failed-for-benutzer-iis-apppool-asp-net-v4-0 – markzzz

+0

Worüber denkst du? Ich hatte Glück? :) – markzzz