2016-08-30 3 views
0

Ich bin ein neuer Webentwickler und versuche, eine Testwebsite mit Azure-Testdiensten zu hosten.Der Versuch, eine Testwebsite mit Azure zu hosten, aber die SQL-Datenbank wird nicht übertragen.

ich die Test-Site sehen (Sie dies testen zugreifen können) an: http://kencast20160830102548.azurewebsites.net/

Wenn Sie jedoch auf die Dienste gehen -> Fazzt -> Geräte und Anwendungen Seiten, bekomme ich diesen Fehler:

Error. An error occurred while processing your request. Development Mode Swapping to Development environment will display more detailed information about the error that occurred.

Development environment should not be enabled in deployed applications, as it can result in sensitive information from exceptions being displayed to end users. For local debugging, development environment can be enabled by setting the ASPNETCORE_ENVIRONMENT environment variable toDevelopment, and restarting the application."

Diese Seiten basieren auf einer SQL-Datenbank, daher denke ich, dass dies das Problem ist.

Ich habe versucht, mit den Richtungen hier veröffentlicht zu folgen: https://docs.asp.net/en/latest/tutorials/publish-to-azure-webapp-using-vs.html

aber ich Konto meines Microsoft Zu, wenn angemeldet nicht finden kann, das „Configure SQL-Datenbank“ Pop-up-Fenster in.

Die Richtungen scheinen nicht mit denen zu gehen, die in Azure existieren.

Update- 8/31/2016

Ich habe recherchiert und gelernt ein bisschen mehr: Ich habe ein Projekt mit zwei DBContexts.

Wenn ich in Azure publiziere, veröffentlicht es Tabellen aus ApplicationDBContext, aber nicht die Tabellen aus MyCompanyContext. Ich kann mit SQL Server Object Explorer überprüfen. Ich kann meine lokalen Verbindungszeichenfolgen in appsettings.json Datei für ApplicationDB und MyCompanyDB sehen. Hier ist der Code von appsettings.json:

{ 
    "ConnectionStrings": { 
    "DefaultConnection": "Server=(localdb)\\mssqllocaldb;Database=aspnet-MyCompany-3097a012-5e00-4c25-ad83-2730b4d73b4b;Trusted_Connection=True;MultipleActiveResultSets=true" 
    }, 
    "Logging": { 
    "IncludeScopes": false, 
    "LogLevel": { 
     "Default": "Debug", 
     "System": "Information", 
     "Microsoft": "Information" 
    } 
    }, 
    "Data": { 
    "MyCompanyContext": { 
     "ConnectionString": "Server=(localdb)\\mssqllocaldb;Database=MyCompanyContext-f9de2588-77e8-41dd-abb3-84341610b31a;Trusted_Connection=True;MultipleActiveResultSets=true" 
    } 
    } 

}

Allerdings, wenn ich auf den "SQL Server Object Explorer" Fenster schauen, wie ich sehe, dass die Datenbank auf Azure gehostet, mycompanydb.database.windows .net (SQL Server 11.0.9231 -mycompanydb, MyCompany_db) hat nur die Tabellen aus der Datenbank "DefaultConnection" und nichts aus "MyCompanyContext".

Wie bekomme ich die Tabellen von der zweiten Datenbank (MYCompanyContext) nach Azure?

Ich habe diese Stack Overflow Antwort untersucht, aber es verwendet Enable-Migration in der PMC. Wenn ich das tue, erhalte ich einen Fehler, der enable-migrations ist veraltet.

Vor Ort habe ich immer getan Migrationen mit diesem: Add-Migrationen -c

Jede Hilfe MyCompanyContext Sie mich würde geben könnte sehr geschätzt.

Danke!

+0

Das configure SQL zeigt sich, wenn Sie SQL sich verbinden EF verwenden und dass der Assistent identifiziert eine Existenz DbContext Klasse (atleast, das, was mit meinem VS ist passiert, 2015) . Um Ihre App dazu zu bringen, eine Verbindung mit dem SQL-Db herzustellen, lesen Sie möglicherweise die Verbindungszeichenfolge in einem sogenannten 'Startup.cs', wenn Sie ihn in der Datei appsettings.json gespeichert haben. https://docs.asp.net/en/latest/tutorials/first-mvc-app/working-with-sql.html. Dann veröffentlichen Sie die Web-App auf azurblau, wie in dem von Ihnen geposteten Link gezeigt. – Jaya

+0

@JS_GodBlessAll Vielen Dank für die Antwort, aber ich verstehe nicht. Was ist EF? Es wurde in dem Link erwähnt, der in Ihrem Kommentar enthalten war. Ich verstehe auch nicht, was ich von diesem Kommentar aus tun sollte: "Damit Sie Ihre App mit dem SQL-Db verbinden können, lesen Sie möglicherweise die Verbindungszeichenfolge in einem sogenannten Startup.cs, wenn Sie es in Appsettings gespeichert haben. json file. docs.asp.net/en/latest/tutorials/first-mvc-app/... "Dieser Link scheint über das Ausführen einer SQL-Datenbank in einer lokalen Datenbank zu laufen. Ich möchte es auf Azure ausführen. Vielen Dank! –

+0

np, EF = Entity-Framework; um eine Verbindung zu SQL Db herzustellen, sei es auf azur oder lokal - Sie müssen Ihre Verbindungszeichenfolge entsprechend konfigurieren. Wo immer es lokal heißt, zeigen Sie es auf Ihren SQL-Server in der Cloud. Startup.cs ist der Einstiegspunkt für Ihre .net Core App. Hier sind einige der nützlichen Links, um Sie zu starten https://docs.asp.net/en/latest/data/index.html; http://stackoverflow.com/questions/31097933/setting-the-sql-connection-string-for-asp-net-5-web-app-in-azure – Jaya

Antwort

1

Aus den Kommentaren, ich vermute, Sie müssen sicherstellen, sowohl Ihre Kontexte in der Startklasse angewendet werden, wie diese

services.AddEntityFramework().AddSqlServer() 
      .AddDbContext<MyCompanyContext>(options => options.UseSqlServer(Configuration.Get("Data:SQL"))) 
      .AddDbContext<ApplicationDBContext>(options => options.UseSqlServer(Configuration.Get("Data:SQL"))); 

die oben geht von zwei Dinge: 1) Sie die Verbindungszeichenfolge festgelegt haben, wie dies in Ihrem appsettings.json

"Data": { 
"SQL": "Server=tcp:yourDbServer.database.windows.net,1433;Initial Catalog=yourDb;Persist Security Info=False;User ID=youId;Password=YourPswd;MultipleActiveResultSets=True;TrustServerCertificate=False;Connection Timeout=30;", 
} 

2) Sowohl die Kontexte der gleichen Db teilen, wenn nicht, dann die entsprechende Verbindungszeichenfolge ersetzen (stellen Sie sicher, um es auf die Art und Weise abgestimmt Sie es in Ihremhaben) für den Kontext wie dieses Beispiel:

.AddDbContext<MyCompanyContext>(options => options.UseSqlServer(Configuration.Get("Data:SQL2"))); 
+0

Beide Kontext sehen aus wie sie in der Startup-Klasse auf meinem lokalen Computer angewendet werden, und die Verbindungszeichenfolgen sehen aus, wie Sie vorgeschlagen haben. Ich habe eine "SQL" -Zeile hinzugefügt, wie Sie appsettings.json vorgeschlagen haben, aber das hat nichts gelöst. Ich habe mich am Kudo-Dashboard von Azure angemeldet, und dort sehen sie auch gleich aus. Ich sah ein Dokument namens "appsettingsProduction.json" und das sah so aus: –

+0

okay, wieder raten, weil Sie mit neuen Informationen zurückkommen sagen, es gibt zwei appsettings.json Datei - wenn ja - dann tun Sie Folgendes: 1) Überprüfen Auf AzurePortal sieht die 'ASPNET_ENVIRONMENT' wie Bedeutung aus - ist sie auf' development' oder 'production' gesetzt? Suchen Sie auch nach Codezeilen auf 'startup.cs', um zu sehen, ob das Laden von Appsettings bedingt ist, was bedeutet:' .AddJsonFile ($ "appsettings. {Env.EnvironmentName}.json ", true, true);' wenn ja, überprüfe, ob die Verbindungszeichenfolgen, die dem DbContext entsprechen, darin sind? lokal debuggen, um zu sehen, ob beide verfügbar sind? Zuletzt - funktioniert es lokal? – Jaya

+0

Ich kann die ASPNET_ENVIRONMENT nicht finden AzurePortal/Kudu Dashboard, aber auf meinem lokalen Computer ist die ASPNET_ENVIRONMENT auf "development" gesetzt. Alles andere sieht richtig aus und die Verbindungszeichenfolgen enthalten beide vom DbContext. Es funktioniert definitiv lokal und beide DbContext funktionieren. –

Verwandte Themen