web部署代理能否在IIS6上80以外的端口上运行?

web部署代理能否在IIS6上80以外的端口上运行?,iis,configuration,webserver,webdeploy,Iis,Configuration,Webserver,Webdeploy,我在Windows2003机器上遇到了一点挑战,我需要在一个不是80的端口上运行WebDeploy代理。默认情况下,MsDepSvc将在http://[server]/msdeployangentservice公开一个端点,该端点显然隐式侦听端口80 我遇到的问题是,机器也在运行使用端口80的Visual SVN Server,因此web部署代理服务拒绝启动。(至少这是我能得出的唯一合乎逻辑的结论。)我在同一台机器上有一个小型SVN管理应用程序,我想通过web deploy发布它,这就是难题所在

我在Windows2003机器上遇到了一点挑战,我需要在一个不是80的端口上运行WebDeploy代理。默认情况下,MsDepSvc将在http://[server]/msdeployangentservice公开一个端点,该端点显然隐式侦听端口80

我遇到的问题是,机器也在运行使用端口80的Visual SVN Server,因此web部署代理服务拒绝启动。(至少这是我能得出的唯一合乎逻辑的结论。)我在同一台机器上有一个小型SVN管理应用程序,我想通过web deploy发布它,这就是难题所在


是否可以在另一个端口上运行代理?显然,如果这是IIS7,我们会在8172上,一切都会很好,但不幸的是,这里不是这样。有什么建议吗?

有几种方法可以做到这一点:

选项1:卸载并重新安装,指定不同的端口:

msiexec /I WebDeploy_x86_en-US.msi /passive ADDLOCAL=ALL LISTENURL=http://+:8172/MsDeployAgentService
命令行安装MsDeployAgentService,并将其配置为在端口8172上侦听,就像在IIS7上一样

选项2:重新配置现有服务以侦听端口8172:

msiexec /I WebDeploy_x86_en-US.msi /passive ADDLOCAL=ALL LISTENURL=http://+:8172/MsDeployAgentService
  • 停止msdepsvc(
    净停止msdepsvc

  • 编辑以下注册表值:

    HKLM\SYSTEM\CurrentControlSet\Services\MsDepSvc\Parameters\ListenUrl
    
    它看起来像:

    http://+:80/MsDeployAgentService
    
    改为:

    http://+:8172/MsDeployAgentService
    
  • 查询HTTP侦听器:

    httpcfg query urlacl
    
    您应该看到结果中列出的以下条目:

    URL : http://+:80/MsDeployAgentService/
    ACL : D:(A;;GX;;;NS)
    
  • 修改侦听器:

    httpcfg delete urlacl /u http://+:80/MsDeployAgentService/
    
    这应该以以下方式进行响应:
    HttpDeleteServiceConfiguration已完成,为0。

    httpcfg set urlacl /u http://+:8172/MsDeployAgentService/ /a D:(A;;GX;;;NS)
    
    这应该以以下方式进行响应:
    HttpSetServiceConfiguration已完成,为0。

    httpcfg set urlacl /u http://+:8172/MsDeployAgentService/ /a D:(A;;GX;;;NS)
    
    /a
    开关中指定的ACL应与
    httpcfg query urlacl
    命令报告的ACL匹配

  • 重新启动msdepsvc(
    net start msdepsvc

  • 您可以通过执行以下操作确认服务正在侦听端口8172:

    netstat -an
    
    您应该看到以下内容:

    TCP    0.0.0.0:8172           0.0.0.0:0              LISTENING
    
  • 警告:

    msiexec /I WebDeploy_x86_en-US.msi /passive ADDLOCAL=ALL LISTENURL=http://+:8172/MsDeployAgentService
    

    我会先在非生产机器上尝试这一点,以确保它如您所期望的那样工作。

    以下是我为Windows 7所做的更改,遵循Kev的方法:

    步骤3:
    netsh http show urlacl

    步骤4:
    netsh http delete urlacl url=http://+:80/MSDEPLOYAGENTSERVICE/


    netsh-http-add-urlacl-url=http://+:8172/MSDEPLOYAGENTSERVICE/sddl=D:(A;;GX;;;NS)

    为了实现这一点,我将Kev的可靠建议粘在了一个批处理脚本中,用于更改端口号的一站式购物

    :: Name:     MsDepSvc.Port.cmd
    :: Purpose:  Modifies the TCP/IP port that the Web Deployment Agent Service
    ::           (MsDepSvc) listens on.  Tested on Win7 Enterprise 32-bit.
    :: Author:   stevejansen_github@icloud.com
    :: Revision: January 2013
    
    @ECHO OFF
    SETLOCAL ENABLEEXTENSIONS
    SETLOCAL ENABLEDELAYEDEXPANSION
    
    :: variables
    SET me=%~n0
    SET url=
    SET port=
    IF NOT "%~1"=="" (
      SET /A port=%~1
    )
    
    ECHO %me%: Web Deployment Agent Service (MsDepSvc) port change script
    
    :: default argument values
    IF "%port%"=="" (
      SET /A port=8172
      ECHO %me%: INFO - using default port value of 8172
    )
    
    SC.EXE query msdepsvc >NUL 2>NUL
    IF NOT "%ERRORLEVEL%"=="0" (
      ECHO %me%: ERROR - MsDepSvc not installed
      ECHO %me%: exiting
      EXIT /B 1
    )
    
    ECHO %me%: stopping MsDepSvc
    NET STOP msdepsvc >NUL 2>NUL
    
    :: check if the default port is set
    REG.EXE QUERY HKLM\SYSTEM\CurrentControlSet\Services\MsDepSvc\Parameters /v ListenUrl >NUL
    IF NOT "%ERRORLEVEL%"=="0" (
      ECHO %me%: ERROR - MsDepSvc ListenUrl registry key not found
      REG.EXE QUERY HKLM\SYSTEM\CurrentControlSet\Services\MsDepSvc\Parameters
      ECHO %me%: exiting
      EXIT /B 2
    )
    
    FOR /F "tokens=3" %%I IN ('REG.EXE QUERY HKLM\SYSTEM\CurrentControlSet\Services\MsDepSvc\Parameters /v ListenUrl ^| FINDSTR ListenUrl') DO (
      SET url=%%I
    )
    ECHO %me%: INFO - MsDepSvc current reservation is "%url%"
    
    NETSH.EXE http show urlacl "%url%" >NUL
    IF NOT "%ERRORLEVEL%"=="0" (
      ECHO %me%: ERROR - reservation for "%url%" not found
      EXIT /B 4
    )
    
    :: save the existing urlacl properties for User, Listen, Delegate, and SDDL
    FOR /F "tokens=1,* delims=: " %%A IN ('NETSH.exe http show urlacl %url%  ^| FINDSTR "User Listen Delegate SDDL"') DO (
      SET URLACL.%%A=%%B
    )
    
    IF NOT DEFINED URLACL.User     ECHO %me%: Failed to read the exising URLACL setting for User     &&GOTO :ERROR
    IF NOT DEFINED URLACL.Listen   ECHO %me%: Failed to read the exising URLACL setting for Listen   &&GOTO :ERROR
    IF NOT DEFINED URLACL.Delegate ECHO %me%: Failed to read the exising URLACL setting for Delegate &&GOTO :ERROR
    IF NOT DEFINED URLACL.SDDL     ECHO %me%: Failed to read the exising URLACL setting for SDDL     &&GOTO :ERROR
    
    ECHO %me%: updating MsDepSvc to listen on port %port%
    REG.EXE ADD HKLM\SYSTEM\CurrentControlSet\Services\MsDepSvc\Parameters /v ListenUrl /t REG_SZ /f /d "http://+:%port%/MSDEPLOYAGENTSERVICE/"
    
    ECHO %me%: deleting the existing reservation for MsDepSvc
    NETSH.EXE http delete urlacl "%url%" || GOTO :ERROR
    
    ECHO %me%: adding the port %port% reservation for MsDepSvc
    NETSH.EXE http add urlacl url=http://+:%port%/MsDeployAgentService/ user="%URLACL.User%" listen="%URLACL.Listen%" delegate="%URLACL.Delegate%" SDDL="%URLACL.SDDL%"  || GOTO :ERROR
    
    ECHO %me%: starting MsDepSvc
    NET START msdepsvc >NUL 2>NUL
    
    ECHO %me%: process info for MsDepSvc
    QUERY.EXE PROCESS MSDEPSVC.EXE
    ECHO.
    ECHO %me%: port bindings for MsDepSvc
    NETSTAT.EXE -a -n -o | FINDSTR /R "TCP.*:%port%.*LISTENING Proto"
    ECHO.
    ECHO %me%: finished
    
    :END
    ENDLOCAL
    ECHO ON
    @EXIT /B 0
    
    :ERROR
    ECHO %me%: ERROR - exiting with errorlevel %ERRORLEVEL%
    ECHO ON
    @EXIT/B %ERRORLEVEL%
    
    阅读更多:


    了解存储在哪个注册表项中的属性背后的魔力也很有价值-enter-用于读取/修改MSI数据库的无价且简单易用的工具(尽量不要修改)

    首先,我们需要在属性表中找到属性

    找到属性后,转到注册表表并找到插入该属性的位置。

    Epic fu there Kev-如果这是易趣,我会“AAAA++++”告诉你,在搜索同一问题时,我刚刚找到了这个答案,但影响了Windows 7框,这个过程对我很有效,只需稍微更改一下使用“netsh”命令即可。参考:我得到了以下错误和改变端口为我工作。由于发生套接字错误(10054),正在重试同步。正在重试对象sitemanifest(sourcePath)上的“序列化”操作。服务器端事件日志包含:“System.Net.HttpListenerException:尝试在不存在的网络连接上执行操作。”感谢您的修复。以下是Kev的回答:httpcfg是作为“Windows Server 2003 Service Pack 2 32位支持工具()”的一部分分发的。我的选项1失败:我无法重新安装,因为WMSvc(Web管理)已经使用了8172。我不明白-MsDepSvc需要WMSvc才能工作,但两者都使用同一个端口,这在理论上没有意义,在实践中,对我来说,证明不起作用!这对任何人来说都是怎样的?只是碰巧遇到了这个。很好的适应+1:)谢谢-我收到一个错误:“Url保留添加失败,错误:183”“当该文件已经存在时无法创建文件”Hi@niico,您尝试使用的端口号是什么,您确定它是未使用的端口,并且在错误消息之前看到了什么输出?如果可以,我将后退一步。我只想停止使用端口80——因为它在硬件防火墙上是开放的——并使用另一个关闭的端口(大多数是关闭的),因此它不向世界开放,只向VPN用户开放。我不介意哪个港口。想法?(错误之前的一行是:为MsDepSvc添加端口1872保留)-这是在Windows Server 2012上干净地安装了Web Deploy 3.5。这对我启动服务很有效,但IIS中仍然缺少管理图标。有什么想法吗?