【发布时间】:2016-10-08 09:11:09
【问题描述】:
在为小型测试 ASP.NET Core MVC 项目运行发布时,我在针对实时数据库自动运行迁移时遇到了一些困难。
如果我同时发布 Settings / Databases / Default Connection / Use this connection string at runtime 和 Settings / Databases / Entity Framework Migrations / ApplicationDbContext 未选中,则网站发布很好,但正如预期的那样,数据库保持不变。
如果我使用 Settings / Databases / Default Connection / Use this connection string at runtime 进行发布,那么它似乎会将我的整个开发数据库复制到实时服务器,包括所有数据。绝对不是我需要的。
如果我使用 Settings / Databases / Entity Framework Migrations / 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.
如果我在发布对话框的 Preview 选项卡上单击 Entity Framework Migrations 下的 Preview Migration,则一切正常,复制生成的 SQL 迁移然后在服务器上手动运行它。此外,一旦正确应用了迁移,应用程序本身就会完美运行 - 故障点特别是发布过程尝试应用迁移时。
我的连接字符串也是相同的,因为开发和实时都有一个名称相同的数据库并使用集成安全性,在我手动运行迁移后站点可以正常工作,因此必须正确配置。
我真正想做的是在检查 Settings / Databases / Entity Framework Migrations / ApplicationDbContext 运行时找出错误的底部,因为我很确定这是我的选项想。该错误听起来像是试图在服务器上使用我的开发机器本地路径运行 SQL 文件,但我很难过。
【问题讨论】:
标签: asp.net asp.net-core entity-framework-core webdeploy entity-framework-migrations