2012-01-05 11 views
6

Obecnie buduję projekt aplikacji sieci Web w Visual Studio 2010 i do niedawna nie musiałem używać tego kodu dla członków, użytkowników i ról itp. przechowywane w pliku bazy danych ASPNETDB.mdf. Prowadziłem projekt na Visual Studio Web Server, IIS Express (od Visual Studio), a także IIS7.5 bez problemu.Próba dołączenia automatycznie nazwanej bazy danych dla pliku .mdf nie powiodła się.

Jednak teraz trzeba włączyć kont użytkowników i kiedy użyć kodu rusztowaniem się zalogować, pojawia się błąd serwera stwierdzające:

Próba dołączenia bazy danych auto o nazwie dla pliku C: \ Users \ User \ Documents \ COMP6059 \ PomumV2 \ PomumV2 \ App_Data \ aspnetdb.mdf nie powiodło się. Baza danych o tej samej nazwie istnieje lub określony plik nie może zostać otwarty lub znajduje się w udziale UNC.

Ten błąd występuje tylko wtedy, gdy korzystam z serwera IIS Express lub IIS7.5. Serwer sieci Web Visual Studio działa dobrze.

Podążam za instrukcjami od http://support.microsoft.com/?kbid=2002980 bez rezultatu.

Poniżej jest mój ciąg połączenia do bazy danych:

<add name="ApplicationServices" 
    connectionString="data source=.\SQLEXPRESS;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|aspnetdb.mdf;User Instance=true" 
    providerName="System.Data.SqlClient" /> 

Błąd występuje na następnej linii pliku AccountController.cs (co jest generowane automatycznie)

... if (Membership.ValidateUser(model.UserName, model.Password)) { ... 

Czytałem gdzieś, że Mogę potrzebować przenieść bazę danych do SQL Server Management Studio, a następnie dołączyć do niej wizualne studio, ale nie mogłem zalogować się do bazy danych.

Chcę, aby to było możliwe do uruchomienia na IIS7.5. Czy ktoś ma jakieś pomysły, jak rozwiązać ten problem?

Odpowiedz

3

Jest to potencjalnie problem związany z kontem, na którym uruchomiono usługi IIS, ponieważ nie ma dostępu do tego pliku.

Przypisywanie pełnych uprawnień do tego folderu dla konta usługi sieciowej.

Możesz tymczasowo wypróbować opcję "Wszyscy" i sprawdzić, czy to rozwiązuje problem, i od tej chwili przerwać pracę.

zapewniają także jego nie jest używany przez inny serwer WWW (proces explorer/Sysinternals może pomóc pokazać, że)

+0

Grupy Wszyscy i SERWIS NETWORK mają pełną kontrolę nad katalogiem App_Data, ale nadal otrzymuję to samo. Dość pewna, że ​​nie jest używany przez żaden inny serwer WWW. Mam badacza procesu, ale nie jestem pewien, czego szukam. – Mabbage

+0

wyszukaj nazwę db w eksploratorze procesów, a jeśli jest używana, pokaże proces, który ją otworzył. może być otwarty w Visual Studio, serwer sieciowy VS nadal może się trzymać itd. –

+0

Dałam "pełną kontrolę" serwisowi NETWORK nad całym folderem dokumentów i wydaje się, że rozwiązałem powyższy problem. Pojawia się teraz kolejny błąd dotyczący "nieudanego logowania dla NT AUTHORITY \ NETWORK SERVER", ale powinien on stanowić kolejne pytanie, ponieważ wydaje się być wystarczająco odrębnym problemem. – Mabbage

1

Sprawdź, czy folder nie jest tylko do odczytu. Pracuje dla

0

Wydaje mi OP został rozwiązany ale mimo to warto tagowanie na moim rozwiązanie, ponieważ może to pomóc innym w przyszłości .....

miałem podobny problem, gdzie localDB poszedł w widoczny tryb "tylko do odczytu" na serwerze na żywo, ale działał dobrze na moim lokalnym laptopie dev.

Po przeczytaniu tak wielu postów i próbowaniu wszystkiego, co mogłem znaleźć, wciąż nie działało.

Przypadkiem poszedłem do IIS na serwerze na żywo i zauważyłem, że zidentyfikowano 3 połączenia z bazą danych. 2 zostały odziedziczone - nie wiem skąd - a trzecie zostało zadeklarowane lokalnie (np. Na stronie web.config).

Usunąłem 2 odziedziczone połączenia i, voila! Teraz działa dobrze.

0

Miał ten problem po migracji z VS2013 do społeczności VS2015, podczas próby otwarcia pliku .mdf bazy danych projektu z folderu Visual Studio 2013. Następnie skopiowałem projekt z plikiem bazy danych do nowo utworzonego folderu Visual Studio 2015 i problem został rozwiązany.

Powiązane problemy