是否可以使用Web Deploy的Parameters.xml系统将XML元素插入到我的web.config中?
该XMLFILE出现参数"厚道"是最接近我所需要的,但它的match属性只接受XPath查询,而我似乎没有能够在我的XPath查询指定一个不存在的元素.(或者说,我可以指定一个不存在的元素 - Web Deploy只是忽略它.)具体来说,我想改变它:
<configuration>
<plugins>
<add name="bleh"/>
</plugins>
</configuration>
Run Code Online (Sandbox Code Playgroud)
进入这个:
<configuration>
<plugins>
<add name="bleh">
<option name="foo" value="bar"/>
</add>
</plugins>
</configuration>
Run Code Online (Sandbox Code Playgroud)
(不幸的是,我无法使用空option元素预先存储web.config,因为这个特定的插件系统不喜欢无法识别/空的选项.)
谢谢你的任何想法!
我是一个持续交付的迷,我对自动构建,测试和部署过程充满热情.我真正需要一些帮助的一件事是在自动部署中部署数据库迁移脚本时的最佳实践.这些是我的技术堆栈的相关细节.
目前我能够使用Web Deploy 2.0工具部署我们的ASP.NET MVC网站(哇,设置很有趣!).MSDeploy有一个'dbFullSql'提供程序,但这只能用于部署整个数据库,而不能用于迁移.MSDeploy打开门以进行扩展,使用'runCommand'提供程序在远程服务器上执行任意进程.我想我可以利用它来执行我的迁移脚本.但是,我觉得应该有更好的方法来做到这一点.
在回答时请记住,我希望将MSDeploy用于与远程部署目标的所有交互.虽然如果你知道一个可以用来将迁移安全地推送到不是MSDeploy的远程目标的工具,我也有兴趣听到这个!
编辑:回答者(他们删除了他们的答案!)参考了以下文章:http://www.asp.net/web-forms/tutorials/deployment/web-deployment-in-the-enterprise/deploying-database-项目
这是一个我不知道的极好的资源.大多数内容我都以某种形式阅读过,不幸的是,这篇特别的文章再次证实了我自己的怀疑.从本质上讲,没有简单的方法可以使用当前工具推送自定义增量更新(在未来的版本中,典型的MS风格的软件承诺可以提供更好的功能).
在它提到的文章主题的说明中.
...使用VSDBCMD是增量数据库发布的推荐方法.
但是VSDBCMD只能在源和目标之间生成增量脚本,我根本不信任迁移,特别是在生产部署上.本文提到的通过Web Deploy推送增量更新的唯一解决方案是创建一个包含自定义SQL迁移脚本的自定义WPP目标文件.
您可以将Web Deploy配置为运行数据库项目生成的SQL部署脚本,但为了执行此操作,您需要为Web应用程序项目创建自定义WPP目标文件.这为部署过程增加了大量复杂性.此外,Web Deploy不直接支持对现有数据库的增量更新.有关此方法的详细信息,请参阅将Web发布管道扩展到包数据库项目部署的SQL文件.
哎呀!它确实看起来很复杂.我以前读到过这个,我希望有更好的方法.到目前为止,我仍然倾向于执行SQLCMD的MSDeploy'runCommand'提供程序.
当我创建发布配置文件时,我可以选择我希望发布用于此配置文件的配置.选项类似于Debug,Release或任何自定义的选项,如Staging.问题是如果我选择除Release或Debug之外的任何配置,比如Staging,visual studio会完全忽略我的选择并使用Web.Release.config进行转换和构建.我做错了什么还是这个设计?似乎Publish只将Release和Debug识别为可接受的Configuration.有关这个问题的任何想法?
我正在使用Visual Studio 2012 RTM.
更新1 ::"NightlyLive - 任何CPU"配置选择:
在这里,我选择自己的自定义配置"NightlyLive":

以下是我发布时会发生的事情:
6>------ Build started: Project: UI.Next, Configuration: Release Any CPU ------
7>------ Publish started: Project: UI.Next, Configuration: Release Any CPU ------
7>Transformed Web.config using [...]\UI.Next\Web.Release.config into obj\Release\TransformWebConfig\transformed\Web.config.
Run Code Online (Sandbox Code Playgroud)
正如您所看到的,它使用Release Any CPU(而不是NightlyLive - 任何CPU)构建项目,并且还使用Web.Release.config(而不是Web.NightlyLive.config)转换Web.config.
更新2 ::配置文件名称重命名为"NightlyLive":
在这里,我将配置文件名称从"test"重命名为"NightlyLive".

这是控制台输出:
6>------ Build started: Project: UI.Next, Configuration: Release Any CPU ------
7>------ Publish started: Project: UI.Next, Configuration: Release Any CPU ------
7>Transformed Web.config using [...]\UI.Next\Web.Release.config into obj\Release\TransformWebConfig\transformed\Web.config.
7>[...]\UI.Next\Web.NightlyLive.config(23,18): Warning : Argument 'debug' did not …Run Code Online (Sandbox Code Playgroud) 我使用Microsoft的Web Deploy Remote Agent服务,允许我从Visual Studio中轻松地将代码发布到服务器.
我正在部署的网站使用log4net将消息记录到日志文件,每次我尝试部署新版本的代码时,我在Visual Studio中收到此错误,指出当前的log4net日志文件正在使用中:
在远程计算机上处理请求时发生错误.文件'Web.log'正在使用中.
该进程无法访问"C:\ inetpub\wwwroot\Logs\Web.log",因为它正由另一个进程使用.
我可以通过进入服务器并iisreset在发布之前进行解决来解决这个问题...但这有点打败了从Visual Studio中"轻松"发布的观点:)
有没有什么方法可以让发布任务自动发出iisreset,或者其他方式我可以解决这个问题?
我正在设置CI和D的申请.我创建了一个DEV-Deploy web.config转换,其中包含dev测试环境的连接字符串.

以下是Web.DEV-Deploy.config连接字符串部分的内容:
<connectionStrings xdt:Transform="RemoveAttributes(configSource)">
<add name="DbContext"
providerName="MySql.Data.MySqlClient"
connectionString="CXN_STRING"
xdt:Transform="Insert" xdt:Locator="Match(name)"/>
<add name="elmah"
connectionString="CXN_STRING"
xdt:Transform="Insert" xdt:Locator="Match(name)"/>
</connectionStrings>
Run Code Online (Sandbox Code Playgroud)
它应该看起来像:
<connectionStrings>
<add name="DbContext" providerName="MySql.Data.MySqlClient"
connectionString="CXN_STRING"/>
<add name="elmah" connectionString="CXN_STRING"/>
</connectionStrings>
Run Code Online (Sandbox Code Playgroud)
我正在使用命令行构建,我尝试了以下命令,这些命令都不起作用:
msbuild web\web.csproj /T:Package /P:Configuration=DEV-Deploy /P:TransformConfigFiles=true
msbuild web\web.csproj /T:Package /P:Configuration=DEV-Deploy /t:TransformWebConfig
Run Code Online (Sandbox Code Playgroud)
部署任务如下所示:
web.deploy.cmd /Y /M:https://MACHINEIP:8172/msdeploy.axd -allowUntrusted /U:USERNAME /P:PASSWORD /A:Basic
Run Code Online (Sandbox Code Playgroud)
web.config在部署时看起来像这样:
<connectionStrings configSource="connectionStrings.config"></connectionStrings>
Run Code Online (Sandbox Code Playgroud)
我已经在我的本地计算机上尽我所能测试并且无法复制该问题.我需要做什么才能使转换在构建中正常工作?
我有VS 2013旗舰版.我的远程服务器是IIS 7.5并启用了远程部署.我已通过Web Platform Installer 4.6安装了Web Deploy Tool 2.1并成功安装.
当我尝试在发布工具上验证从本地计算机到远程服务器的连接时,出现以下错误:"无法加载文件或程序集"Microsoft.Web.Deployment,Version = 9.0.0.0,Culture = Neutral,PubliKeyToken = 31bf3856ad364e35或其中一个依赖项.系统找不到指定的文件."
我知道我的机器上缺少Microsoft.Web.Deployment.dll.我安装了Web Deployment Tool来安装这个程序集.但这并没有解决问题.程序集不会反映在我的可用程序集列表中,以作为参考添加到我的项目中.
其他主题也回答了同样的问题.但那些并没有解决我的问题.
有没有想过解决这个问题?
此致,Suraj
我已在Windows Server 2008 R2上为我的IIS安装配置了Web Deploy.
我在为域名购买有效证书之前这样做了,因此第一次获取有关自签名证书的Visual Studio警告是正常的.
但是,在我们为域名购买了有效证书后,我不知道如何告诉Web部署使用新证书(我直接发布到https://www.example.org).警告是关于计算机的自签名证书,使用计算机名称作为主机名.
服务器不在AD域中或某种程度上.
有帮助吗?谢谢
我已在具有新站点的本地Windows 2012服务器上设置了Web部署.
我已在IIS服务器级别和站点级别通过IIS管理器权限设置管理员权限.
我为MySiteApp创建了一个应用程序池和一个虚拟目录.
My Web Deploy在VS.NET 2015上发布设置:
服务器:192.168.45.60站点名称:TestSite/MySiteApp用户名:TESTSERVER\Administrator
验证发布配置文件上的连接传递确定.
添加True到.pubxml
尝试发布到服务器时,我收到错误:
错误错误:远程服务器返回错误:(401)未经授权.错误代码:ERROR_USER_UNAUTHORIZED
在Windows Server 2012事件查看器中,我可以看到此错误:
IISWMSVC_LOGIN_UNKNOWN_ERROR
检索登录信息时发生意外错误.
异常:System.Runtime.InteropServices.COMException(0x8007000D):站点名称无效
Microsoft.Web.Administration.SiteCollection.get_Item(String)上的Microsoft.Web.Administration.Interop.IAppHostProperty.set_Value(Object value)at Microsoft.Web.Administration.ConfigurationElementCollectionBase`1.FindElementWithCollectionKey(String elementName,String collectionKey,Object value)在Microsoft.Web.Management.Server.WebManagementHttpModule的Microsoft.Web.Management.Server.ApplicationManagementUnit..ctor(IManagementContext context,String siteName,String applicationPath)上的Microsoft.Web.Management.Server.ApplicationManagementUnit.EnsureDefinition()处. Microsoft.Web.Management.Server.WebManagementHttpModule.OnApplicationPostAuthorizeRequest(Object sender,EventArgs e)中的CreateManagementUnit(HttpRequest请求)
进程:WMSvc User = TESTSERVER\Administrator
如果我在.pubxml更改如下:
<MSDeployPublishMethod>WMSVC</MSDeployPublishMethod>
至
<MSDeployPublishMethod>RemoteAgent</MSDeployPublishMethod>
Run Code Online (Sandbox Code Playgroud)
并添加 <AuthType>NTLM</AuthType>
然后我就可以毫无问题地发布了.
我想我没有正确设置WMSVC发布的东西.
谢谢你的帮助.
阿萨夫
在web.config我有:
<applicationSettings>
<App.Properties.Settings>
<setting name="ProfitConnectorToken" serializeAs="String" xdt:Transform="Replace" xdt:Locator="Match(name)">
<value>__ProfitConnectorToken__</value>
</setting>
</App.Properties.Settings>
Run Code Online (Sandbox Code Playgroud)
在我的parameters.xml中:
<parameter name="ProfitConnectorToken" description="Description for ProfitConnectorToken" defaultvalue="__PROFITCONNECTORTOKEN__" tags="">
<parameterentry kind="XmlFile" scope="\\web.config$" match="/configuration/applicationSettings/App.Properties.Settings/setting[@name='ProfitConnectorToken']/value/text()" />
Run Code Online (Sandbox Code Playgroud)
在我的SetParameters.xml中:
<setParameter name="ProfitConnectorToken" value="<token><version>1</version><data>XXXXXXXXXXXXXXXXXXXXXXXXX</data></token>" />
Run Code Online (Sandbox Code Playgroud)
但是,部署Web应用程序时未设置此值.当我将SetParameters.xml更改为:
<setParameter name="ProfitConnectorToken" value="TEST" />
Run Code Online (Sandbox Code Playgroud)
它确实有效,所以我的XPath是正确的.为什么未设置编码的xml值?
我无法发布(WebDeploy)我的Azure Function应用程序(这是一个耐用的功能,我知道这无关紧要,但是以防万一)。今天开始发生这种情况。
我的Visual Studio的输出窗口中出现“发布失败”弹出窗口和以下错误消息。
错误信息
<ProjectName> -> C:\search\source\<Solution Folder>\obj\Release\netstandard2.0\PubTmp\Out\
C:\Program Files\dotnet\sdk\2.1.202\Sdks\Microsoft.NET.Sdk.Publish\build\netstandard1.0\PublishTargets\Microsoft.NET.Sdk.Publish.MSDeploy.targets(139,5): error : Web deployment task failed. (Could not connect to the remote computer ("<functionappname>.scm.azurewebsites.net"). On the remote computer, make sure that Web Deploy is installed and that the required process ("Web Management Service") is started. Learn more at: http://go.microsoft.com/fwlink/?LinkId=221672#ERROR_DESTINATION_NOT_REACHABLE.) [<projectname>.csproj]
C:\Program Files\dotnet\sdk\2.1.202\Sdks\Microsoft.NET.Sdk.Publish\build\netstandard1.0\PublishTargets\Microsoft.NET.Sdk.Publish.MSDeploy.targets(139,5): error : The requested resource does not exist, or the requested URL is incorrect. [<projectname>.csproj]
C:\Program Files\dotnet\sdk\2.1.202\Sdks\Microsoft.NET.Sdk.Publish\build\netstandard1.0\PublishTargets\Microsoft.NET.Sdk.Publish.MSDeploy.targets(139,5): error : Error details: [<projectname>.csproj]
C:\Program Files\dotnet\sdk\2.1.202\Sdks\Microsoft.NET.Sdk.Publish\build\netstandard1.0\PublishTargets\Microsoft.NET.Sdk.Publish.MSDeploy.targets(139,5): error : Could …Run Code Online (Sandbox Code Playgroud) webdeploy ×10
msdeploy ×4
.net ×3
asp.net-mvc ×2
web-config ×2
asp.net ×1
asp.net-core ×1
azure ×1
c# ×1
iis-7 ×1
iis-8 ×1
msbuild ×1
sql-server ×1
ssl ×1
xpath ×1
xslt ×1