2013-04-08 4 views
5

Ich habe gerade eine neue Anwendung in ASP.Net MVC 4 bereitgestellt. Ich verwende einen SQL Server 2008 R2 (NICHT SQL Express).Fehler beim Erstellen der SQL Server Express-Datenbankdatei in MVC 4 - aber ich möchte SQL Server Express NICHT verwenden

Es funktionierte gut für die ersten 10 Minuten, dann habe ich eine kleine Änderung im Code und re-deployed es. Jetzt

, wenn ich versuche, auf eine Seite zuzugreifen, die SimpleMembership verwendet, bekomme ich diesen Fehler:

A network-related or instance-specific error occurred while establishing a connection to SQL Server. The server was not found or was not accessible. Verify that the instance name is correct and that SQL Server is configured to allow remote connections. (provider: SQL Network Interfaces, error: 26 - Error Locating Server/Instance Specified)

Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.

SQLExpress database file auto-creation error:
The connection string specifies a local Sql Server Express instance using a database location within the application's App_Data directory. The provider attempted to automatically create the application services database because the provider determined that the database does not exist. The following configuration requirements are necessary to successfully check for existence of the application services database and automatically create the application services database:

Aber ich nicht Verwendung von SQL Server Express. In meinem web.config Ich habe alle Verbindungszeichenfolgen wie folgt festgelegt:

<add name="ApplicationServices" 
    connectionString="Server=myServer;Database=myDB;User Id=myUserID;Password=myPWD;" 
    providerName="System.Data.SqlClient" /> 

<add name="ApplicationServices" 
    connectionString="Server=myServer;Database=myDB;User Id=myUserID;Password=myPWD;" 
    providerName="System.Data.SqlClient" /> 

Warum es versucht nicht halten eine SQL Server EXPRESS Datenbank zu erstellen?

+0

Der Name der Verbindungszeichenfolge muss dem Datenbankkontext entsprechen. Siehe http://stackoverflow.com/questions/5346926/code-first-specify-database-name – AaronLS

+1

Entschuldigung, ich habe Ihr Problem möglicherweise falsch verstanden. Ich nahm an, dass du zuerst den EF-Code benutzt hast. – AaronLS

+1

hast du das gelöst? Ich habe genau denselben Fehler. – Chatumbabub

Antwort

4

Haben Sie dieses Problem immer noch? Warum haben Sie ApplicationServices zweimal aufgeführt?

Ich stieß vor einer Weile auf das Gleiche. Mir fehlte die Konfiguration in web.config für Mitgliedschaft und Rollen.

<membership defaultProvider="AspNetSqlMembershipProvider"> 
    <providers> 
    <clear /> 
    <add name="AspNetSqlMembershipProvider" 
     type="System.Web.Security.SqlMembershipProvider" 
     connectionStringName="ApplicationServices" 
     enablePasswordRetrieval="false" 
     enablePasswordReset="true" 
     requiresQuestionAndAnswer="false" 
     requiresUniqueEmail="false" 
     maxInvalidPasswordAttempts="5" 
     minRequiredPasswordLength="6" 
     minRequiredNonalphanumericCharacters="0" 
     passwordAttemptWindow="10" 
     applicationName="Test" /> 
    </providers> 
</membership> 
<roleManager enabled="true" defaultProvider="SqlRoleManager"> 
    <providers> 
    <add name="SqlRoleManager" 
     type="System.Web.Security.SqlRoleProvider" 
     connectionStringName="ApplicationServices" 
     applicationName="Test" /> 
    </providers> 
</roleManager> 
4

Als ich auf diesen Fehler stieß, erwies es sich als einfach. Ich fand schließlich heraus, dass ich in meinem _Layout.cshtml User.IsInRole("role"), aber nach einem Request.isAuthenticated referenzierte. Mein Code sah ungefähr wie @if (Request.isAuthenticated && User.IsInRole("role")) aus. Also grundsätzlich wenn ich nicht angemeldet wäre würde die Homepage rendern, da es nicht auf den IsInRole() Aufruf übergehen würde (was die Initialisierung der einfachen Mitgliedschaft erfordert, ansonsten würde ich den Fehler erhalten den du hier erwähnst. Also musste ich im Grunde dafür sorgen jeder Controller, der eine Ansicht verwendet, die die _Layout Datei erweitert und nicht authentifizierte Benutzer haben könnte, braucht eine [InitializeSimpleMembership] zu haben. Oder eine der verschiedenen Möglichkeiten Einfache Mitgliedschaft zu initialisieren.

So etwas wie

namespace ProjectName.Controllers 
{ 
    [InitializeSimpleMembership] 
    public class HomeController : Controller { 
... 

Außerdem würde ich oft Strg + F5, um die Anwendung zu starten und dann "Rebuild Solution" nach. Wenn ich eine Seite aktualisiert, die nicht die Wurzel war Homepage würde ich den Fehler bekommen, bis ich die Root-Homepage aufrufen würde. Zu diesem Zeitpunkt würde alles wieder funktionieren.

Hoffentlich wird dies Ihnen oder jemandem helfen. Ich schlug meinen Kopf für mindestens ein oder zwei Stunden.

Verwandte Themen