0

当运行一个发布一个小测试ASP.NET MVC的核心项目,我有一些困难自动运行针对活动数据库迁移。EF核心RC2迁移失败时发布/ depolyment

如果我既设置/数据库/默认连接/在运行时使用此连接字符串设置发布/数据库/实体框架迁移/ ApplicationDbContext勾选,那么该网站发布精细,但按预期的数据库,保持不动。

如果我发布设置/数据库/默认连接/在运行时使用此连接字符串检查然后它似乎将我的整个开发数据库复制到实时服务器,包括所有的数据。绝对不是我需要的。

如果我发布设置/数据库/实体框架迁移/ ApplicationDbContext选中,那么我收到以下错误:

Configuring the following project for use with IIS: 'C:\Users\User\AppData\Local\Temp\PublishTemp\TestProject57' 
Updating web.config at 'C:\Users\User\AppData\Local\Temp\PublishTemp\TestProject57\web.config' 
Configuring project completed successfully 
publish: Published to C:\Users\User\AppData\Local\Temp\PublishTemp\TestProject57 
Published 1/1 projects successfully 
Publishing with publish method [MSDeploy] 
Executing command ["C:\Program Files (x86)\IIS\Microsoft Web Deploy V3\msdeploy.exe" -source:manifest='C:\Users\User\AppData\Local\Temp\PublishTemp\obj\SourceManifest.xml' -dest:manifest='C:\Users\User\AppData\Local\Temp\PublishTemp\obj\DestManifest.xml',ComputerName='https://xxx:8172/msdeploy.axd',UserName='xxx',Password='{PASSWORD-REMOVED-FROM-LOG}',IncludeAcls='False',AuthType='Basic' -verb:sync -enablerule:AppOffline -retryAttempts:20 -allowUntrusted] 
C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v14.0\DotNet\Microsoft.DotNet.Publishing.targets(406,5): Error : Error: (08/06/2016 08:29:36) An error occurred when the request was processed on the remote computer. 
C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v14.0\DotNet\Microsoft.DotNet.Publishing.targets(406,5): Error : Error: Could not find a part of the path 'C:\Users\User\AppData\Local\Temp\PublishTemp\obj\TestProject.Models.Database.ApplicationDbContext.sql'. 
C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v14.0\DotNet\Microsoft.DotNet.Publishing.targets(406,5): Error : at Microsoft.Web.Deployment.NativeMethods.RaiseIOExceptionFromErrorCode(Win32ErrorCode errorCode, String maybeFullPath) 
C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v14.0\DotNet\Microsoft.DotNet.Publishing.targets(406,5): Error : at Microsoft.Web.Deployment.FileStreamEx.CreateInstance(String path, FileMode fileMode, FileAccess fileAccess, FileShare fileShare, Nullable`1 fileLength) 
C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v14.0\DotNet\Microsoft.DotNet.Publishing.targets(406,5): Error : at Microsoft.Web.Deployment.ReadWriteScriptFileProvider.GetFileStream() 
Info: Using ID 'xxx' for connections to the remote server. 
Info: Adding child sitemanifest (C:\Users\User\AppData\Local\Temp\PublishTemp\obj\TestProject.Models.Database.ApplicationDbContext.sql). 
Info: Using ID 'xxx' for connections to the remote server. 
Info: Updating file (TestProject\web.config). 
Info: Updating file (TestProject\wwwroot\css\site.min.css). 
Info: Adding child sitemanifest (C:\Users\User\AppData\Local\Temp\PublishTemp\obj\TestProject.Models.Database.ApplicationDbContext.sql). 
Info: Adding database (sitemanifest/dbFullSql[@path='C:\Users\User\AppData\Local\Temp\PublishTemp\obj\TestProject.Models.Database.ApplicationDbContext.sql']/sqlScript) 

C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v14.0\DotNet\Microsoft.DotNet.Publishing.targets(406,5): Error : at Microsoft.Web.Deployment.ReadWriteScriptFileProvider.Add(DeploymentObject source, Boolean whatIf) 
C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v14.0\DotNet\Microsoft.DotNet.Publishing.targets(406,5): Error : at Microsoft.Web.Deployment.DeploymentObject.AddChild(DeploymentObject source, Int32 position, DeploymentSyncContext syncContext) 
C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v14.0\DotNet\Microsoft.DotNet.Publishing.targets(406,5): Error : at Microsoft.Web.Deployment.DeploymentSyncContext.HandleAddChild(DeploymentObject destParent, DeploymentObject sourceObject, Int32 position) 
C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v14.0\DotNet\Microsoft.DotNet.Publishing.targets(406,5): Error : at Microsoft.Web.Deployment.DeploymentSyncContext.SyncChildrenOrder(DeploymentObject dest, DeploymentObject source) 
C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v14.0\DotNet\Microsoft.DotNet.Publishing.targets(406,5): Error : at Microsoft.Web.Deployment.DeploymentSyncContext.HandleAddChild(DeploymentObject destParent, DeploymentObject sourceObject, Int32 position) 
C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v14.0\DotNet\Microsoft.DotNet.Publishing.targets(406,5): Error : at Microsoft.Web.Deployment.DeploymentSyncContext.SyncChildrenOrder(DeploymentObject dest, DeploymentObject source) 
C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v14.0\DotNet\Microsoft.DotNet.Publishing.targets(406,5): Error : at Microsoft.Web.Deployment.DeploymentSyncContext.ProcessSync(DeploymentObject destinationObject, DeploymentObject sourceObject) 
C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v14.0\DotNet\Microsoft.DotNet.Publishing.targets(406,5): Error : at Microsoft.Web.Deployment.DeploymentObject.SyncToInternal(DeploymentObject destObject, DeploymentSyncOptions syncOptions, PayloadTable payloadTable, ContentRootTable contentRootTable, Nullable`1 syncPassId, String syncSessionId) 
C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v14.0\DotNet\Microsoft.DotNet.Publishing.targets(406,5): Error : at Microsoft.Web.Deployment.DeploymentAgent.HandleSync(DeploymentAgentAsyncData asyncData, Nullable`1 passId, String user, String siteName) 
C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v14.0\DotNet\Microsoft.DotNet.Publishing.targets(406,5): Error : Error count: 1. 

1>Publish failed due to build errors. Check the error list for more details. 

一切完美,如果我点击下实体框架迁移预览迁移在发布对话框的预览选项卡上,复制生成的SQL迁移,然后针对服务器手动运行它。另外,一旦正确应用迁移,应用程序本身就可以完美运行 - 故障点主要是发布过程尝试应用迁移时。

我的连接字符串也是相同的,因为两者的发展和生活都具有相同名称的数据库,并使用集成的安全性,这是该网站的工作后,我手动运行迁移,必须正确配置。

我真的很想做的事是在运行设置/数据库/实体框架迁移/ ApplicationDbContext检查时发现错误的底部,因为我非常确定这是我想要的选项。这个错误听起来像是试图在服务器上运行一个本地开发机器的路径上的SQL文件,但我很难过。

回答

1

这是在preview1工装出版与EF迁移的问题。这已被修复 - https://github.com/aspnet/vsweb-publish/commit/b46d54f74d7298e65dde1622bda340af3b23713f

解决此问题: 1.将工具更新为Preview2版本。如果您已经有了publishprofile和ps1文件,请删除ps1文件并发布。这将带来更新版本的ps1。 https://go.microsoft.com/fwlink/?LinkId=817245 2.复制该文件 https://raw.githubusercontent.com/aspnet/vsweb-publish/master/publish-module.psm1内容到C:\ Program Files文件(x86)的\微软的Visual Studio 14.0 \ Common7 \ IDE \扩展\微软\网络工具\发布\脚本\ 1.1.0 \发布模块。 psm1 (基于安装的工具,它将为1.1.0或1.2.0)。

这应该可以解决这个问题。 详细穿行发布一个ASP.NET核心应用到应用服务与EF迁移 https://dotnetpublish.wordpress.com/2016/07/05/publish-an-asp-net-core-web-app-with-ef-migrations-to-azure-appservice/

相关问题