2012-04-22 14 views
16

Próbuję utworzyć aplikację sieci web przy użyciu ASP.Net MVC3, Entity Framework i MySQL.Dostawca nie zwrócił błędu ciąg ProviderManifestToken

Dodałem następujący kod do mojego pliku Web.Config.

<connectionStrings> 
    <add name="ContactContext" connectionString="server=localhost;database=contacts;uid=root;pwd=password;" providerName="MySql.Data.MySqlClient"/> 

    </connectionStrings> 

Stworzyłem także model "Person", "ContactContext" w projekcie "Contact_Me". Kiedy próbuję utworzyć „ContactController” włącznie Osoba Model i kontekście kontaktów, to daje mi następujący błąd

„Nie można pobrać metadanych dla«Connect_Me.Models.Persons». Operator nie zwracać ProviderManifestToken ciąg "

MYSQ & MVC3 SQL connection error \ ProviderManifestToken but I am using MySQL, to jest najbliższe pytanie do mojego. Ale odpowiedź nie rozwiązała mojego problemu.

Dzięki z góry

+0

Czy mógłbyś opublikować całą wiadomość wyjątku? Wcześniej ten błąd dotyczył przede wszystkim MySQL, ale muszę sprawdzić, czy jest taki sam. I także stacktrace. – Xharze

+0

To tylko komunikat o błędzie pojawia się po kliknięciu przycisku OK po wypełnieniu formularza w celu utworzenia kontrolera contactcontroller. – har

+0

Sprawdź, czy connectionString został dodany do poprawnego pliku Web.config. Powinien znajdować się w głównym pliku konfiguracyjnym (nie w widoku/Web.config). –

Odpowiedz

2

Problem dotyczył złącza MySQL/Net.

Używałem wcześniej złącza MySQL/Net 6.3.5, a po odinstalowaniu i zainstalowaniu złącza MySQL/Net 6.5.4 problem został rozwiązany. Możesz znaleźć najnowsze złącza pod adresem http://www.mysql.com/products/connector/

0

może być błąd jest w ciągu połączenia. Czy próbowałeś podłączyć do instancji DB stosując powyższą się zalogować. Spróbuj zmienić ciąg połączenia

connectionString="Data Source=.;Initial Catalog=contacts;Integrated Security=True uid=root;pwd=password;" providerName="MySql.Data.MySqlClient"/> 

korzystanie powyżej, jeśli używasz serwera sql, else, jeśli używasz SQL Express użycie poniżej jednego

connectionString="Data Source=.\SQLEXPRESS;Initial Catalog=contacts;Integrated Security=True uid=root;pwd=password;" providerName="MySql.Data.MySqlClient"/> 
+0

Próbowałem zalogować się do instancji DB. To działa dobrze. Myślę też, że problem dotyczy ciągu połączenia. Twoje rozwiązanie również nie działa. – har

+0

Używasz operatora nazwa dla "MySQL" podczas korzystania z MSSQL. – ilter

0

Mimo że odpowiedź na to pytanie, ale wystąpił ten sam problem i mój w przypadku, gdy był w ciąg połączenia; Miałem część "Zintegrowane bezpieczeństwo", kiedy naprawdę nie powinienem jej używać; Opierałem się na uwierzytelnianiu bazy danych.

usunąłem „Integrated Security = true” część i to działało idealnie :)

20

Wiem, że może to być bardzo proste dla pary z was, ale ten wyjątek jest także rzucony w przypadkach, gdy nie jest w stanie EF zlokalizować ciąg połączenia do użycia. Jeśli pracujesz w aplikacji wielowarstwowej, upewnij się, że ciąg połączenia został dodany do aplikacji klienckiej zamiast biblioteki klas zawierającej kod dostępu do danych. Tylko moje 2 centy.

+1

Wystąpił błąd podczas korzystania z narzędzia do naprawy wsteczne EF Power Tools (Code First), a Twoja odpowiedź była natychmiastowa. Podałem połączenie w EF PowerTools, ale brakowało go w web.config aplikacji docelowej. Dzięki za to! – hardba11

+0

Dokładny powód w moim przypadku. Dzięki, user1843594! –

+0

Nieprawidłowy ciąg połączenia powoduje to również. Z powodu błędu formatowania dwukrotnie miałem port w łańcuchu połączeń (np. "Server.com:3306:3306") i otrzymałem ten błąd. – dlchambers

10

Dostałem ten błąd, gdy mój serwer sql był faktycznie wyłączony. Dlatego upewnij się, że twój serwer sql działa.

0

Ponownie uruchomiłem komputer.

Podczas wyświetlania tego komunikatu nie stwierdziłem żadnych różnic między moim komputerem [Windows 10] a serwerem testowym, na którym aplikacja została wdrożona w tej samej konfiguracji i działała prawidłowo w tym samym miejscu i przy użyciu tej samej bazy danych. Oznacza to, że problem prawdopodobnie nie był połączony z bazą danych uruchomioną na serwerze testowym.

Warto wspomnieć, że podczas restartowania wystąpiły pewne aktualizacje systemu Windows.

1

Czasami problem ten pojawia się, ponieważ sslmode jak dla mnie rozwiązaniem było dodać sslmode = None, aby ciąg połączenia

musiałem zrobić małą zmianę do mojego ciąg połączenia z

<add name="Connection" connectionString="Server=SOMEHOST;Database=DB;Uid=USR1;Pwd=PASS1;sslmode=None;" providerName="MySql.Data.MySqlClient" /> 

to

<add name="Connection" connectionString="Server=SOMEHOST;Database=DB;Uid=USR1;Pwd=PASS1;sslmode=None;" providerName="MySql.Data.MySqlClient" /> 
Powiązane problemy