我试图通过MSDeploy运行命令作为我的打包/部署过程的一部分.特别是,我试图通过对我的一个DLL 运行installutil来创建自定义事件日志,但是我在部署目录中指定DLL 的相对路径时遇到问题.首先,我将以下配置添加到我的csproj中,以便在我的Manifest文件中生成runCommand提供程序.请注意DLL的绝对路径.
<PropertyGroup>
<!-- Extends the AfterAddIisSettingAndFileContentsToSourceManifest action to create Custom Event Log -->
<IncludeEventLogCreation>TRUE</IncludeEventLogCreation>
<AfterAddIisSettingAndFileContentsToSourceManifest Condition="'$(AfterAddIisSettingAndFileContentsToSourceManifest)'==''">
$(AfterAddIisSettingAndFileContentsToSourceManifest);
CreateEventLog;
</AfterAddIisSettingAndFileContentsToSourceManifest>
</PropertyGroup>
<Target Name="CreateEventLog" Condition="'$(IncludeEventLogCreation)'=='TRUE'">
<Message Text="Creating Event Log" />
<ItemGroup>
<MsDeploySourceManifest Include="runCommand">
<path>installutil C:\inetpub\wwwroot\MyTestApp\bin\BusinessLayer.dll</path>
</MsDeploySourceManifest>
</ItemGroup>
</Target>
<ItemGroup>
Run Code Online (Sandbox Code Playgroud)
在调用msbuild之后,这在package.zip中正确生成了我的清单.当我运行MyTestApp.deploy.cmd/Y时,它正确调用了msdeploy并将我的文件部署到inetpub\wwwroot\MyTestApp并从下面的清单中运行我的命令:
<runCommand path="installutil C:\inetpub\wwwroot\MyTestApp\bin\BusinessLayer.dll ... etc
Run Code Online (Sandbox Code Playgroud)
我遇到的问题是我不想将此DLL路径硬编码到c:\ inetpub\etc.如何使用默认网站下部署目录中的相对路径进行上述调用?理想情况下,我希望MSDeploy采用此路径并将其作为变量传递给runCommand语句,以便找到DLL.然后我可以编写类似的内容:<path>installutil $DeploymentDir\NewTestApp\bin\BusinessLayer.dll</path>无需担心硬编码绝对路径.
有没有办法这样做,而不是每次都使用我的DLL的绝对路径?
如果我在Visual Studio 2010中查看Web应用程序的打包/发布设置,则可以选择"包括IIS管理器中配置的所有IIS设置(仅用于IIS Web项目)"
我使用IIS而不是VS Dev Server来运行我的Web应用程序,但是当我将Web Deploy创建的软件包部署到远程服务器时,应用于我的远程IIS应用程序的IIS设置至少是陌生的,并且在最坏的情况下,完全错误.
例如,我的本地IIS有2个虚拟目录(图像,声音).但是当我部署时,它会创建4个完全不同的虚拟目录(_controltemplates,_layouts,_vti_bin,_wpresources),如果我事先在远程服务器上手动创建2个正确的vdirs,Web Deploy将删除它们.Web Deploy从哪里获得了那些?Web Deploy还错误地在远程IIS应用程序上应用了正确的身份验证设置.
由于"包含IIS管理器中配置的所有IIS设置"设置似乎没有找到正确的设置,因此我最终希望能够创建某种配置文件,Web Deploy将将其用作其部署包的一部分.理想情况下,我可以检查源代码控制.但我无法从文档中弄清楚如何做到这一点.我看到有关参数化和清单的一些内容,但我无法弄明白.
deployment iis visual-studio-2010 virtual-directory webdeploy
我有一个项目,对于localhost的发布(web部署)在VS 2010下工作.除了在VS 2012 RC中打开它之外,我没有对项目进行任何更改.
我尝试使用VS 2012 RC时发布的消息失败,并显示该服务不存在,即使该站点存在于IIS中并且可以发布到该站点.
现在,当我在VS 2010中打开项目并尝试发布时,发布失败并出现同样的问题.我没有尝试在VS 2012 RC中发布的其他项目仍然有工作发布配置文件.
有没有其他人遇到过这个问题,如果有的话,你做了什么来纠正它?我已经研究了为什么发布可能会失败的所有常见问题,但是将其他项目发布到IIS作为同一台机器上的本地主机正在运行,所以我认为排除任何失败的服务.
<TLDR>
它是在所有可能的使用MS的网络部署到部署Web应用程序的远程主机从命令行与非管理员用户?
</ TLDR>
我已经遵循了Microsoft的安装和配置Web部署指南中的每一点.我的目标是能够与IIS用户/非管理员用户进行远程Web部署.
完成为非管理员部署安装和配置Web部署中所述的所有步骤后,我收到以下日志消息(表示一切正常):
Publish enabled for 'deploy_user'
Granted 'deploy_user' full control on 'C:\inetpub\wwwroot'
Successfully created settings file 'C:\Users\...\Desktop\deploy_user_Default Web Site.PublishSettings'
Run Code Online (Sandbox Code Playgroud)
接下来,当我从本地计算机尝试运行以下命令时:
.\my_deploy_package.cmd /M:https://machine_name:8172/msdeploy.axd -allowUntrusted /U:deploy_user /P:deploy_password /A:Basic /T
Run Code Online (Sandbox Code Playgroud)
我收到一条错误消息:错误:远程服务器返回错误:(401)未经授权.
如果我在目标计算机上进入事件查看器>自定义视图> Administratove事件,我看到此消息出现"匹配"错误:
IISWMSVC_AUTHORIZATION_SERVER_NOT_ALLOWED
只允许Windows管理员使用服务器连接进行连接.其他用户应使用"连接到站点或应用程序"任务才能进行连接.
进程:WMSvc User = deploy_user
此错误与此问题中描述的完全相同.而接受的答案表明,我已经做是正确的做法.
我已经尝试了几种建议,就像这样,但似乎没有任何帮助.管理服务设置为允许远程连接(Windows和IIS管理器),并且我已经为内置Windows用户(非管理员)和IIS管理员用户运行配置,但仍然是相同的错误.但是,只要我与管理员用户一起运行deploy命令,它就会成功.
我被允许通过IIS gui与我的非管理员deploy_user用户远程连接(在IIS中:连接到站点> [服务器URL]/[站点名称]> deploy_user/deploy_password),表示已配置必要的权限和规则.但是,当我尝试运行部署脚本命令行(使用相同的用户)时,它会失败.
如果它实际上是因为错误消息指示,任何非管理员用户只能通过IIS管理器使用" 连接到站点"或"应用程序",那么从命令行/构建服务器执行此类部署的建议方法是什么?我真的不想在构建服务器的配置中以明文形式输入管理员用户的用户名/密码...
我发现有一个选项是,如果你的构建服务器和你试图部署的机器有一个共同的Active Directory(或其他共享用户的方式),你可以跳过这个/A:Basic标志,完全省去用户名和密码.您必须确保运行部署的用户也具有部署目标的管理员权限.但是,在我们的一个案例中,构建服务器和部署目标没有共同的用户群,因此这不是一个选项,我们将以明文形式返回用户名/密码 …
尝试通过TFS持续部署部署azure网站时遇到以下错误.
我正在使用TfvcContinousDeploymentTemplate.12.xaml构建定义模板.
异常消息:Web Deploy无法修改目标上的文件"Antlr3.Runtime.dll",因为它已被外部进程锁定.为了使发布操作成功,您可能需要重新启动应用程序以释放锁定,或者在下次发布尝试时使用.Net应用程序的AppOffline规则处理程序.有关详情,请访问:http://go.microsoft.com/fwlink/?LinkId = 221672 #ERROR_FILE_IN_USE.(输入DeploymentDetailedException)
我已经完成了建议和添加的内容
<EnableMSDeployAppOffline>true</EnableMSDeployAppOffline>
Run Code Online (Sandbox Code Playgroud)
发布配置文件,但它没有让应用程序脱机,因为我得到相同的错误.
这是我的构建定义的视图,其中设置为使用发布配置文件和应用程序离线设置.

我们使用TeamCity自动化MSBuild以使用WebDeploy将我们的应用程序推送到各种服务器.
在大多数情况下,我们有这个工作,很棒.但有一个障碍:我们有一个文件夹可以保存我们不希望在发布期间删除的上传内容.
我如何告诉WebDeploy,"我知道该文件夹不在编译的应用程序中.忽略它.只是不管它."
我正在尝试使用msdeploy部署站点,并且无法在IIS用户帐户下部署它.我的管理员帐户能够成功部署.
我采取的步骤:
我收到以下错误:
Unable to perform the operation. Please contact your server administrator to check authorization and delegation settings.
Run Code Online (Sandbox Code Playgroud) 我有一个Web Deploy 3.5软件包,我想部署到远程服务器.如何在MSDeploy.exe命令行上指定站点的名称?
这是我到目前为止所拥有的:
C:\Program Files (x86)\IIS\Microsoft Web Deploy V3\msdeploy.exe
-source:package='package.zip'
-dest:auto,computerName="ServerName",includeAcls="False"
-verb:sync
-disableLink:AppPoolExtension
-disableLink:ContentExtension
-disableLink:CertificateExtension
-setParamFile:"package.SetParameters.xml"
Run Code Online (Sandbox Code Playgroud)
但是该文件的名称是在package.SetParamters.xml文件中指定的,我更喜欢在命令行中设置它.我想部署此软件包的一些地方是位于同一服务器上的不同站点,例如我们的Stage和UAT站点.
我已经看过使用这里描述的iisApp和appHostConfig提供程序:http://technet.microsoft.com/en-us/library/dd569040%28v=ws.10%29.aspx
但是我在将这些与包文件结合使用时遇到了麻烦.
我正在使用Jenkins配置CI构建服务器.在构建步骤之后,我想部署网站.
从Web Deploy发布的VisualStudio发布网站时.我喜欢这种方法,因为它实际上发布了那些已经改变的文件,所以部署非常快.
现在在构建服务器上我正在尝试做同样的事情:构建应用程序(使用MSBuild.exe),然后部署应用程序(使用MSDeploy.exe?).
我已经看到他们使用MSBuild.exe和其他人使用部署应用程序的一些帖子MSDeploy.exe,那里有显着的差异吗?
你有什么建议可以帮助吗?
谢谢,先进.
我试图从命令行msdeploy执行,例如以下命令:
"C:\Program Files\IIS\Microsoft Web Deploy V3\msdeploy.exe" -verb:sync
-source:package="Templates\TemplateAppPool.zip"
-dest:appPoolConfig="MyAppPool",computerName="...",userName="...",password="..."
-replace:objectName=processModel,targetAttributeName=idleTimeout,replace=00:45:00
-replace:objectName=add,targetAttributeName=managedPipelineMode,replace=Integrated
-allowUntrusted
Run Code Online (Sandbox Code Playgroud)
并得到以下错误
Info: Using ID '0b2ec654-ae21-4848-897d-f644d95b4bfa' for connections
to the remote server.
Error Code: ERROR_CONNECTION_TERMINATED
More Information: Web Deploy experienced a connection problem with
the server and had to terminate the connection. Contact your server
administrator if the problem persists. Learn more at:
http://go.microsoft.com/fwlink/?LinkId=221672#ERROR_CONNECTION_TERMINATED
Run Code Online (Sandbox Code Playgroud)
我添加了-allowUntrusted以防止目标计算机上的证书可能出错.因为当我尝试从VS 2013中执行此操作时,它会向我显示有关目标计算机上的证书的错误/警告.无论如何,我接受了错误的证书,它进一步说连接是可以的,但是
当我尝试从VS 2013发布时,我得到了关注
Start Web Deploy Publish the Application/package to
https://remotehost:8172/msdeploy.axd?site=Default%20Web%20Site ...
C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v11.0\Web\Microsoft.Web.Publishing.targets(4193,5):
Error : Web deployment task failed. (Unknown ProviderOption:DefiningProjectFullPath.
Known …Run Code Online (Sandbox Code Playgroud)