2011-05-03 51 views
25

我在Windows 2003机器上遇到了一些挑战,我需要在不是80的端口上运行Web部署代理。默认情况下,MsDepSvc会在http:// [server]处公开端点,/MsDeployAgentService显然隐式侦听端口80.Web部署代理可以在IIS6上的80以外的端口上运行吗?

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

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

回答

60

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

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

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

命令行安装MsDeployAgentService并配置它来听在端口8172上就像在IIS7上一样。

选项2:重新配置现有的服务为监听端口8172:

  1. 停止msdepsvc(net stop msdepsvc

  2. 编辑以下注册表值:

    HKLM\SYSTEM\CurrentControlSet\Services\MsDepSvc\Parameters\ListenUrl 
    

    它看起来像这样:

    http://+:80/MsDeployAgentService 
    

    更改为:

    http://+:8172/MsDeployAgentService 
    
  3. 查询HTTP听众:

    httpcfg query urlacl 
    

    你应该看到在结果中列出的以下条目:

    URL : http://+:80/MsDeployAgentService/ 
    ACL : D:(A;;GX;;;NS) 
    
  4. 修改监听器:

    httpcfg delete urlacl /u http://+:80/MsDeployAgentService/ 
    

    这应该响应:HttpDeleteServiceConfiguration completed with 0.

    httpcfg set urlacl /u http://+:8172/MsDeployAgentService/ /a D:(A;;GX;;;NS) 
    

    这应该响应:HttpSetServiceConfiguration completed with 0.

    /a开关应匹配由httpcfg query urlacl命令报告的ACL中指定的ACL

  5. 重新启动msdepsvc(net start msdepsvc)。

  6. 可以确认该服务是通过做端口8172监听:

    netstat -an 
    

    您应该看到以下内容:

    TCP 0.0.0.0:8172   0.0.0.0:0    LISTENING 
    

警告:

我会先在非生产机器上尝试这个以确保它这符合您的预期。

+1

Epic fu there Kev - 如果这是ebay,我会是“AAAA ++++”你说的是showa – Doug 2011-05-17 04:49:57

+5

我刚刚在搜索同一个问题时找到了这个答案,但影响到了Windows 7的一个盒子,我改变了使用'netsh'命令的方式。参考:http://msdn.microsoft.com/en-us/library/ms733768.aspx – 2011-10-29 17:24:18

+0

我得到以下错误和更改端口为我工作。 “因为发生套接字错误(10054)而重试同步。在对象sitemanifest(sourcePath)上重试操作'序列化'。”服务器端事件日志包含“System.Net.HttpListenerException:尝试在不存在的网络连接上执行操作。”感谢您的修复。 – Matt 2012-01-16 18:58:01

24

这些是我对Windows 7的,要做到以下千电子伏的配方的变化:

第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)

+1

这对我开始服务,但在IIS中仍然缺少管理图标。任何想法? – riaandelange 2013-04-26 19:09:57

+0

感谢它为我工作 – Anil 2016-01-20 06:13:18

7

对于什么是值得,我将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: [email protected] 
:: 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% 

阅读更多:

+0

刚碰到这个。很好的适应+1 :) – Kev 2013-04-18 20:53:37

+0

谢谢 - 我得到一个错误,虽然: “网址预订添加失败,错误:183” “无法创建文件时,该文件已存在” – niico 2013-12-02 19:55:32

+0

嗨@niico,你想要什么端口号使用,你确定它是一个未使用的端口,你在错误信息之前看到了什么输出? – 2013-12-02 20:12:09

0

这也是值得了解的背后找出什么属性存储在该注册表项中的魔力 - 进入Orca.exe - 无价并使用简单的工具读取/修改MSI数据库(尽量不要修改)。

首先,我们需要找到在属性表 enter image description here

一旦财产被发现的财产,去注册表表并找到它插入。 enter image description here

相关问题