27

Probleme beim Bereitstellen einer Website auf einem Windows 2008 R2-Server mit IIS7. Ich habe zuvor eine andere Site auf diesem Server bereitgestellt. Die Web-Bereitstellung verbindet und kopiert meine Dateien auf den Server, aber ich sehe die folgenden Fehler.VS2010 Web die Bereitstellung der Verbindungszeichenfolge Argument kann nicht null oder leer

1 The 'Connection String' argument cannot be null or empty 
2 Web deployment task failed.((20/07/2012 14:19:16) An error occurred when the request was processed on the remote computer.) 

(20/07/2012 14:19:16) An error occurred when the request was processed on the remote computer. Could not find a part of the path 'C:\Users\Me\Documents\Visual Studio 2010\Projects\MySite\MySiteClient\obj\Release\AutoScripts\EFDbContext-Deployment_SchemaOnly.sql'.  0 0 MySiteClient 

Ich habe überprüft, dass der Pfad auf meinem lokalen Computer vorhanden ist.

Ich habe versucht, veröffentlichen mit aus web.config Transformationen und mit der Verwendung der XDT: Transform-Funktionen, um die Remote-Server-Zeichenfolgen festzulegen.

Ich habe auch explizit die Verbindungszeichenfolgen für Ziel-und Quelldatenbank in der SQL-Registerkarte Package/Publish festgelegt und habe keine Ahnung, was das Problem ist.

Irgendwelche Ideen?

+0

Vollständiger Benutzerfehler. Nach dem Import von meiner Web Config hatte ich zwei DB-Einträge ApplicationServices und MyAppContext. Ich habe die Verbindungszeichenfolge für den ersten Eintrag Application, aber nicht für den MyAppContext Entry festgelegt. Ich glaube, ich habe dies übersehen, weil ich nicht bemerkt habe, dass sich das Eingabefeld für die Verbindungszeichenfolge mit dem ausgewählten Eintrag in der Datenbankliste geändert hat. doh ..... – MPD

Antwort

44

Dies geschah gerade jetzt für mich und ich schaffte es, das Problem zu isolieren ... nach dem manuellen Hinzufügen einer neuen SQL Server Verbindungszeichenfolge in meinem Web.config Ich fing an, diesen sehr Fehler bei der Bereitstellung auf dem Remote-Server zu erfahren.

Wenn ich öffnete die Bahn in Visual Studio 2012 veröffentlichen Profil stelle ich unter der Registerkarte Settings bemerkt, dass es diese Option gesetzt hatte: Verwenden Sie diese Verbindungszeichenfolge zur Laufzeit (Update Ziel Web.config).

Seltsam war diese Einstellung automatisch von VS 2012 ...

das Problem zu lösen, deaktivieren Sie einfach die Checkbox und Web-deploy wieder zu arbeiten beginnen sollte.

enter image description here

+4

Wenn die obigen Schritte auch nicht funktionieren: Löschen Sie das Veröffentlichungsprofil, dann folgen Sie den obigen Schritten, und das sollte es beheben. Glücklich, jeden zu kodieren! –

+1

vielen Dank ...! – Luftwaffe

+0

Danke, dieser Beitrag hat mir sehr geholfen und meine Zeit gespart. –

14

Neben Leniel Antwort, Sie im Falle verwenden SqlClient oder Entity Framework-Code zunächst nicht und somit nicht sehen Sie das Kontrollkästchen (n), vorübergehend die provider in Ihrer web.config die Verbindungszeichenfolge auf System.Data.SqlClient und kehren Sie dann zu Ihren Veröffentlichungseinstellungen zurück, um die Kontrollkästchen zu deaktivieren.

+0

Danke dafür, dass ich eine Windows Azure Storage-Verbindungszeichenfolge verwendet habe, und ich musste tun, was Sie sagten (um zu System.Data.SqlClient zu wechseln und dann die Veröffentlichungseinstellungen erneut zu speichern), um diesen Fehler zu beheben. – QFDev

+0

Ich benutze MySql auf Azure und ich habe den providerName = "MySQL Data Provider" und immer noch der Fehler nach der Bereitstellung erscheinen. (und kein Kontrollkästchen auf der Bereitstellungsseite angezeigt wird). Können Sie helfen? – Bergkamp

+0

Haben Sie versucht, zuerst den Providernamen in "System.Data.SqlClient" zu ändern, bevor Sie die Bereitstellungsseite öffnen? –

0

Ich hatte das gleiche Problem, als ich eine Webanwendung auf einem Azure-Webserver bereitgestellt habe. Ich habe es gelöst, indem ich einen neuen Server erstellt habe. An diesem Punkt wurde mir klar, dass es vorher noch eine andere Anwendung auf diesem Server gab. Diese Anwendung verwendete einen Kontextnamen, der von der zweiten Anwendung nicht überschrieben wurde, sodass man nach einer Verbindungszeichenfolge suchte, die von der zweiten Anwendung überschrieben wurde. Ich nehme an, dass dein Server das Problem löscht.

12

ich das gleiche Problem mit:

2> C: ... \ Microsoft.Web.Publishing.targets (4270,5): Fehler: Die 'db-Web.config Connection String' Das Argument darf nicht null oder leer sein. 2> C: ... \ Microsoft.Web.Publishing.targets (4270,5): Fehler: Das Argument 'dbAudit-Web.config Connection String' darf nicht null oder leer sein. 2> C: ... \ Microsoft.Web.Publishing.targets (4270,5): Fehler: Das Argument 'dbLog-Web.config Connection String' darf nicht null oder leer sein.

wie ich war mit:

<connectionStrings> 
    <add name="db" providerName="MySql.Data" connectionString="server=mysql.gko.local;user=maindk;database=gavekortet;port=3306;password=123456" /> 
    <add name="dbLog" providerName="MySql.Data" connectionString="server=mysql.gko.local;user=maindk;database=logs;port=3306;password=123456" /> 
    <add name="dbAudit" providerName="MySql.Data" connectionString="server=mysql.gko.local;user=maindk;database=audit;port=3306;password=123456;pooling=false" /> 
</connectionStrings> 

und wie ich hier die Frage lesen in Bezug auf wurde das Profil veröffentlichen, ich öffnete die .pubxml Datei und ich gefunden habe:

<ItemGroup> 
    <MSDeployParameterValue Include="$(DeployParameterPrefix)db-Web.config Connection String" /> 
    <MSDeployParameterValue Include="$(DeployParameterPrefix)dbAudit-Web.config Connection String" /> 
    <MSDeployParameterValue Include="$(DeployParameterPrefix)dbLog-Web.config Connection String" /> 
</ItemGroup> 

hinzufügen <UpdateDestWebConfig>False</UpdateDestWebConfig> zu jedem Knoten, so wird es:

<ItemGroup> 
<MSDeployParameterValue Include="$(DeployParameterPrefix)db-Web.config Connection String"> 
    <UpdateDestWebConfig>False</UpdateDestWebConfig> 
</MSDeployParameterValue> 
<MSDeployParameterValue Include="$(DeployParameterPrefix)dbAudit-Web.config Connection String"> 
    <UpdateDestWebConfig>False</UpdateDestWebConfig> 
</MSDeployParameterValue> 
<MSDeployParameterValue Include="$(DeployParameterPrefix)dbLog-Web.config Connection String"> 
    <UpdateDestWebConfig>False</UpdateDestWebConfig> 
</MSDeployParameterValue> 
</ItemGroup> 

einfach durch diesen Eintrag löschen, alles wieder funktionierte ...

+2

Aweseome, funktioniert super! – Sundeep

3

Keine der angebotenen Lösungen hat mir geholfen.

Ich entdeckte schließlich, dass in meinem lokalen Web.config gibt eine leere Standardverbindungszeichenfolge LocalMySqlServer (wahrscheinlich durch die Mysql.Data NuGet Paket geschnürt dort) genannt wurde.

Nachdem ich die markierte Zeile entfernt habe, konnte ich erfolgreich veröffentlichen.

enter image description here

+1

Scheint nach der Neuinstallation aller Pakete ein leerer Verbindungseintrag installiert. Das war die Lösung, danke. ;) Ich habe mir das Publishing-Profil angesehen, aber natürlich sind MS-Fehler selten hilfreich. ;) –