我正在使用带有MSDeploy的临时模型将我们的几个站点部署到Web场.这些站点仅在暂存框中的IIS中配置,然后使用MSDeploy从头开始构建目标Web服务器.
登台框为将要生效的站点使用自己的绑定(即没有标头条目,不同的IP /端口和没有主机标头).当我部署它时,我首先有一个xml文件用于准备一个参数化包(使用-declareParamFile开关),它声明参数如下:
<parameters>
<parameter name="site1">
<parameterEntry kind="DestinationBinding" scope="Site1" match=":17000:" />
</parameter>
</parameters>
Run Code Online (Sandbox Code Playgroud)
因此,在上面的XML中,您可以看到暂存的站点托管在端口17000上,因为该match属性设置为匹配具有该值的绑定.
当我然后部署到每个实时站点时,我使用不同的参数XML来指定该机器的正确主机头和IP - 我使用-setParamFile开关应用它.这是其中一个例子.
<parameters>
<setParameter name="site1" value="[ip_addr]:[port]:[host_header]"/>
</parameters>
Run Code Online (Sandbox Code Playgroud)
因此,因为原始参数被声明为匹配其中一个已知绑定 - 我可以将该绑定替换为我实际希望它在每个实时服务器上的绑定.
我现在要做的是部署网站并添加新的目标绑定,其中包含我们拥有的不同顶级域名(即site.com,site.co.uk,site.ca等),所有这些都绑定在同一个IP地址上和港口.
想要这样做的原因是:
问题是我认为似乎没有任何方法可以添加此类信息.我尝试setParameter在第二个XML中添加多个元素,但这只是重复覆盖绑定的效果,最后一个作为最终的赢家.
一个解决方案是我为登台框中的每个站点添加"占位符"绑定,它代表每个域名,端口等的目标外部绑定; 然后我修改两个参数文件来替换那些与真实绑定的绑定.
但对我来说,这感觉是完全错误的 - 这将模拟升级盒以适应实时部署; 它应该是相反的方式.
是否可以使用MSDeploy 实际添加站点绑定(如果是,如何?),还是仅支持替换?
我在一个解决方案中有两个Web项目,我想使用msbuild和WebDeploy来部署它们(这通过CI服务器发生).
目前,我正在运行命令行:
C:\ProjectFolder>msbuild <solution>.sln
/p:Configuration=<Release>
/p:OutputPath=bin
/p:DeployOnBuild=True
/p:DeployTarget=MSDeployPublish
/p:MsDeployServiceUrl=https://<ServerUrl:port>/msdeploy.axd
/p:username=<user>
/p:password=<password>
/p:AllowUntrustedCertificate=True
/p:DeployIisAppPath=<SiteName>
/p:MSDeployPublishMethod=WMSVC
Run Code Online (Sandbox Code Playgroud)
这按预期部署了一个项目.但是我如何部署另一个呢?在这个命令行中没有任何地方我指定了一个项目名称 - 为什么它选择一个项目来部署另一个项目?
理想情况下,我可以使用相同的命令部署两个项目,例如
...
/p:Project=Project1
/p:DeployIisAppPath=<SiteName>/Project1
/p:Project=Project2
/p:DeployIisAppPath=<SiteName>/Project2
Run Code Online (Sandbox Code Playgroud)
但我怀疑这是可能的.或者,我只想知道如何在命令行中指定项目名称.
是否可以在web.config转换文件中包含变量?对于每个环境,我有基本相同的转换,只是具有不同的值.例如,对于开发环境,我有......
<?xml version="1.0"?>
<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">
<appSettings>
<add key="serverName" value="server1" xdt:Transform="Replace" xdt:Locator="Match(key)" />
<add key="serverPath" value="\\server1" xdt:Transform="Replace" xdt:Locator="Match(key)" />
</appSettings>
</configuration>
Run Code Online (Sandbox Code Playgroud)
对于QA环境,我有...
<?xml version="1.0"?>
<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">
<appSettings>
<add key="serverName" value="server2" xdt:Transform="Replace" xdt:Locator="Match(key)" />
<add key="serverPath" value="\\server2" xdt:Transform="Replace" xdt:Locator="Match(key)" />
</appSettings>
</configuration>
Run Code Online (Sandbox Code Playgroud)
唯一的区别是server1与server2的值.这是一个简单的例子,实际上,我在转换中多次使用服务器值.有没有办法在变换文件中声明一个多次使用的变量?就像是...
<?xml version="1.0"?>
<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">
<property name="server" value="server2" />
<appSettings>
<add key="serverName" value="${server}" xdt:Transform="Replace" xdt:Locator="Match(key)" />
<add key="serverPath" value="\\${server}" xdt:Transform="Replace" xdt:Locator="Match(key)" />
</appSettings>
</configuration>
Run Code Online (Sandbox Code Playgroud) web-deployment-project msdeploy web-config-transform webdeploy
我们正在努力实现自动化部署,我真的很高兴使用MSdeploy来帮助我们实现这一目标.不幸的是,我一直没有运气让MS部署与VS2010合作,我即将放弃.
我们的Win 2008服务器位于数据中心,我按照以下方式正确设置防火墙和MS部署远程服务和IIS管理服务:http: //learn.iis.net/page.aspx/516/configure-the-web-deployment -handler /
我已经设置了IIS管理器用户并检查了所有内容,我可以想一想.如果我使用IIS远程管理,我甚至可以从我们的开发环境连接.但是当我从VS 2010发布时,我得到:
Error 1 Web deployment task failed.(Could not connect to the destination computer ("x.x.x.x"). On the destination computer, make sure that Web Deploy is installed and that the required process ("The Web Management Service") is started.)
The requested resource does not exist, or the requested URL is incorrect.
Error details:
Could not connect to the destination computer ("x.x.x.x"). On the destination computer, make sure that Web Deploy is installed and that …Run Code Online (Sandbox Code Playgroud) 如何访问Visual Studio 2010生成的MSDEPLOY命令行.
我问,因为当我手动运行MSDEPLOY时,我可以轻松地在远程服务器上部署,当我在Visual Studio中运行它时,我收到此错误
Web部署任务失败.(无法联系远程代理(url https:// xxxx:8172/msdeply.axd?site =默认网站)确保在目标计算机上安装并启动了远程代理服务.收到了.响应标题'MSDeploy.Response'是''但是'v1'是预期的
远程服务器返回错误:(404)未找到
我们有一个Asp.Net网络应用程序,我们试图伪部署到一个文件夹,我开始认为微软是疯了 - 为什么让WAP做这么难"本地文件系统"部署为MSBuild的一部分?
我可以用这个构建:
msbuild .\SubSite.csproj "/p:Platform=AnyCPU;Configuration=Release" /t:Package
Run Code Online (Sandbox Code Playgroud)
并获得一个很好的package.zip,我可以部署到一个网站...
但是,我的解决方案中有两个项目,我需要在发布之前将它们合并,所以我想将这两个软件包部署到一个文件夹中,然后重新打包该文件夹.尽管文档 TechNet上,相反,它似乎并不可能做到:
msdeploy -verb:sync -source:package=.\SubSite.zip -dest:contentPath=.\Www\SubSite
Run Code Online (Sandbox Code Playgroud)
因为你得到错误:
源(sitemanifest)和目标(contentPath)与给定操作不兼容.
有没有人建议我如何在不手动从"PackageTmp"文件夹中复制文件的情况下将两个站点相互部署?我的意思是,我知道我可以跳过压缩包并手动复制文件来执行此操作,但我不满意必须创建自定义目标,并且没有其他方法可以找到这样做应该内置的东西.
任何人都可以确认(最好带有文档链接)MSDeploy软件包是否在文件同步之前完整上传,或者msdeploy.exe和msdeploy.axd之间是否同步(只修改了文件)?
或者,换句话说,如果我有一个1GB的包zip只包含1MB的更改文件,msdeploy会将整个1GB包上传到MsDeploy.axd并在服务器上执行同步,或者只上传1MB的值改变了文件?
我正在将多个.Net项目部署到不同的服务器上.为此,我的团队正在使用TFS构建,然后从构建模板调用ps1脚本,该脚本使用msdeploy推送到所有不同的服务器.这一切都非常有事,不,我现在不能自由地转向不同的东西.这个过程已经工作了几个月而没有任何问题.
今天,部署连续几次失败并出现一些不同的错误.仅这一点让我感到困惑(也许并不相关),但现在我得到的是:
在远程计算机上处理请求时发生错误."C:\ Builds\SomeDirectory\obj\Debug\Package\PackageTmp\AReferencedProject.dll"的流数据尚不可用.
当我的脚本运行msdeploy时会发生此错误.这个dll由Windows服务使用,但服务已停止(据我所知 - 服务停止没有丢失任何错误)并且dll不是"只读".dll存在于正在构建/部署的计算机上以及正在部署到的计算机上.
我发现如果从正在部署的服务器上删除"不可用"的dll,我可以避免此错误,但问题会在每次后续部署时发生,除非我在每次部署之前手动删除此dll.
我已经看到了这个问题,但我没有推动Azure,只是推向Windows Server 2008.有谁知道为什么Microsoft Web部署(msdeploy)会抛出此错误?
.net msdeploy windows-server-2008 windows-server microsoft-web-deploy
Asp.Net v4 Webforms App依赖于Windows.Azure.Storage.如果我使用WebDeploy将其部署到Azure网站,这一切都可以正常工作.
现在我想在我的bitbucket repo中使用一个分支,让它从源代码控制中自动部署.
我设置了分支,将azure链接到它,然后触发部署.
但它失败了,这是在Azure日志中...
D:\ Windows\Microsoft.NET\Framework\v4.0.30319\Microsoft.Common.targets(1578,5):警告MSB3245:无法解析此引用.无法找到程序集"Microsoft.WindowsAzure.Storage,Version = 2.0.0.0,Culture = neutral,PublicKeyToken = 31bf3856ad364e35,processorArchitecture = MSIL".检查以确保磁盘上存在程序集.如果您的代码需要此引用,则可能会出现编译错误.[C:\ DWASFiles \网站\ KDB\VirtualDirectory0 \站点\库\ Pfv.Kdb.UI\Kdb.UI.csproj]
Nuget启用了包恢复,我检查了nuget.targets以确保将DownloadNugetExe条件设置为true.
为什么它没有引入nuget依赖?
使用常规msdeploy(也称为WebDeploy,用于Visual Studio或VSTS发布)部署到Azure Web App(也称为Azure App Service)时,您可以选择不删除目标上的现有文件.
但是在使用ARM extensions/msdeploy提供程序时(例如通过ARM模板),默认情况下始终会删除现有文件.有没有办法覆盖这个而不是吹掉现有的文件?