我正在设置CruiseControl.NET并在webdashboard上收到以下错误消息:
No connection could be made because the target machine actively refused it 127.0.0.1:21234
它正在寻找的网址是:tcp://localhost:21234/CruiseManager.rem
但是,IIS中的ccnet网站将其tcp端口设置为82
因此,我使用以下网址导航到webdashboard http://127.0.0.1:82/ccnet/ViewFarmReport.aspx
我尝试将IIS中的Tcp端口更改为21234,并在webdashboard上收到以下错误消息:
Tcp channel protocol violation: expecting preamble.
我也尝试使用以下命令打开端口:
netsh firewall add portopening TCP 21234 CCNET
当我尝试启动CCNET服务时,我收到以下消息
The CruiseControl.NET Server service started then stopped. Some services stop automatically if they have no work to do....
有人可以帮我解决这个问题吗?
编辑 - 添加配置文件
<cruisecontrol xmlns:cb="urn:ccnet.config.builder">
<cb:define PublishDir="C:\Deploy\Portal2.0Build"/>
<project name="Portal2.0">
<workingDirectory>C:\PortalCruiseControl\Working</workingDirectory>
<artifactDirectory>C:\PortalCruiseControl\Artifacts</artifactDirectory>
<webURL>http://192.168.17.59:82/ccnet</webURL>
<triggers>
<intervalTrigger name="continuous" seconds="10"
buildCondition="IfModificationExists"/>
</triggers>
<sourcecontrol type="svn">
<trunkUrl>https://portal2003.local:8443/svn/portalv2.0/trunk</trunkUrl>
<executable>C:\Program Files (x86)\VisualSVN Server\bin\svn.exe</executable>
<username>ccnet</username>
<password>***</password>
<cleanCopy>true</cleanCopy>
</sourcecontrol>
<tasks>
<msbuild>
<executable>
C:\WINDOWS\microsoft.net\Framework64\v3.5\MSBuild.exe
</executable>
<projectFile>Portal2.0.sln</projectFile>
<buildArgs>
/target:build;publish /p:Configuration=Release /p:MSBuildExtensionsPath=C:\Progra~2\MSBuild /p:MSBuildEmitSolution=1 /p:publishdir=C:\Deploy\Portal2.0Build /verbosity:diag
</buildArgs>
<logger>
C:\Program Files (x86)\CruiseControl.NET\server\ThoughtWorks.CruiseControl.MSBuild.dll
</logger>
</msbuild>
</tasks>
<labeller type="assemblyVersionLabeller">
<major>2</major>
<minor>0</minor>
<incrementOnFailure>false</incrementOnFailure>
</labeller>
<publishers>
<statistics />
<xmllogger />
<package>
<name>ZipFilePublish</name>
<compression>9</compression>
<always>false</always>
<flatten>false</flatten>
<baseDirectory>$(PublishDir)</baseDirectory>
<dynamicValues>
<replacementValue property="name">
<format>C:\Deploy\Builds\PortalBuild{0}.zip</format>
<parameters>
<namedValue name="$CCNetLabel" value="Default" />
</parameters>
</replacementValue>
</dynamicValues>
<files>
<file>*.*</file>
<file>**\*</file>
</files>
</package>
<email from="bla" mailhost="bla" port="25" userName="bla"
password="bla" includeDetails="TRUE" useSSL="FALSE">
<users>
<user name="User1" group="Portal" address=""/>
</users>
<groups>
<group name="Portal">
<notifications>
<notificationType>change</notificationType>
</notifications>
</group>
</groups>
</email>
</publishers>
</project>
答案 0 :(得分:17)
第一条错误消息可能是由于CCNET服务未运行导致的,因为Web仪表板无法连接到该服务。一旦修复ccnet.config就应该消失,以便服务开始运行。
第二个问题(“路径中的非法字符”;您似乎已经找出丢失的节点部分)是由msbuild/executable element引起的。似乎CC.NET不喜欢空格,特别是它内部的新行字符的价值。替换:
<executable>
C:\WINDOWS\microsoft.net\Framework64\v3.5\MSBuild.exe
</executable>
使用:
<executable>C:\WINDOWS\microsoft.net\Framework64\v3.5\MSBuild.exe</executable>
应该解决问题。
另一个提示:当您遇到ccnet.config文件的有效性问题时,请尝试使用CCValidator.exe(它位于CruiseControl.NET \ server文件夹中)。它通常很好地指出配置文件中有问题的部分(虽然情况并非“路径中的非法字符”问题 - 我不得不注释掉配置的特定部分以找到有问题的节点)。
答案 1 :(得分:0)
您收到的第一条消息(连接被主动拒绝)让我想到了阻止您正在使用的端口的防火墙。
第二个问题可能是任何问题。例如,它可能是XML配置(ccnet.config)文件中的错误。你能在Windows Eventlog中找到任何指针吗?
答案 2 :(得分:0)
关于第二个问题:您是否尝试从命令行运行CC.NET服务器? 如果您的XML配置出错,这将为您提供更有意义的错误消息。 您使用哪个帐户来运行Windows服务?
答案 3 :(得分:0)
您检查过ccnet的dashboard.config文件吗? 它的内容如下:
<server name="local" url="tcp://localhost:21234/CruiseManager.rem" ... />
尝试将端口更改为82,然后重新启动网站(您应该只能在web.config文件中添加空格并保存,IIS将重新启动网站)。
答案 4 :(得分:0)
听起来你混淆了两个不同的功能:
TCP://本地主机:21234
这是CCTray等客户端的默认远程端口。这不用于IIS网站(仪表板)。
配置文档可能缺少正确填充CruiseControl配置所需的Xml节点。缺少所需成员的Xml节点(packageList)(ThoughtWorks.CruiseControl.Core.Publishers.Package Publisher.PackageList)
您的示例配置缺少必需的packageList节点。
答案 5 :(得分:0)
误导性错误消息。端口真的是21234,而不是82.我得到了同样的错误。解决方法是从桌面快捷方式启动ccnet.exe,以发现真正的问题是我的ccnet.config文件中的非法代码。
修复ccnet.config文件后,问题继续存在。在尝试构建时,系统不会让subversion客户端修改签出的仓库中的只读标记文件。
答案 6 :(得分:0)
在我的情况下,我在ccnet.config中错误打印了项目配置文件名,而不是timescheduler.config,它是时间计数器。当我修改文件名时,我能够运行ccnet服务。
<cruisecontrol xmlns:cb="urn:ccnet.config.builder">
<cb:include href="definitions.xml" xmlns:cb="urn:ccnet.config.builder"/>
<cb:include href="projects/timescheduler.config" xmlns:cb="urn:ccnet.config.builder"/>
</cruisecontrol>