2011-03-30 158 views
9

我設置CruiseControl.NET和我上webdashboard以下錯誤信息:CruiseControl.NET無法建立連接?

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> 

回答

17

第一個錯誤消息可能是由於CCNET服務沒有運行,因爲Web儀表板無法連接到它。修復ccnet.config後,它應該立即消失,以便服務開始運行。

第二個問題(「路徑中的Ilegal字符」;您似乎已經計算出缺少的節點部分)是由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

刪除標籤中的路徑中的引號(「」)爲我解決了它。感謝您讓我走向錯誤位置的正確軌道! – Ruslan 2012-11-26 16:34:01

0

您收到的第一條消息(連接積極地拒絕)讓我覺得這是阻止你使用的端口防火牆。

第二個問題可能是什麼。例如,它可能是您的XML配置(ccnet.config)文件中的錯誤。你可以在Windows Eventlog中找到任何指針嗎?

+0

我發現了一個錯誤在我的ccnet.config文件,但是我不知道如何解決它。 - [CCNet服務器:錯誤]例外:無法從配置文件實例化CruiseControl項目。配置文檔很可能缺少正確填充CruiseControl配置所需的Xml節點。缺少所需成員(ThoughtWorks.CruiseControl.Core.Publishers.Packa gePublisher.PackageList)的Xml節點(packageList) - 我嘗試添加一個包列表節點,但仍然出現錯誤。任何幫助? – shane87 2011-03-30 11:08:42

0

關於第二個問題:你是否嘗試從命令行運行CC.NET服務器?
如果您在XML配置中出現錯誤,這會給您一個更有意義的錯誤消息。 您使用哪個帳戶運行Windows服務?

+0

我從命令行運行CC.NET並得到以下錯誤:[CCNet服務器:錯誤]異常: 無法從配置文件實例化CruiseControl項目。 配置文檔很可能缺少正確填充CruiseControl代碼所需的Xml節點。 缺少所需成員的Xml節點(packageList)(ThoughtWorks.CruiseControl.Core.Publishers.Packa gePublisher.PackageList)。 – shane87 2011-03-30 10:47:55

0

您是否檢查過ccnet的dashboard.config文件? 它有下面幾行:

<server name="local" url="tcp://localhost:21234/CruiseManager.rem" ... /> 

試着改變上的端口82,然後重新啓動該網站(你應該只是能夠將空間添加到Web.config文件並保存和IIS會重新啓動網站)。

+0

切換到端口82後,在這裏我得到「Tcp通道協議違規:期待前導。」再次出錯。在我的ccnet.config文件中似乎存在問題,但是從命令行運行cc.net時出現以下錯誤例外:無法從配置文檔實例化CruiseControl項目。配置文檔很可能缺少正確填充CruiseControl配置所需的Xml節點。缺少所需成員的Xml節點(packageList)(ThoughtWorks.CruiseControl.Core.Publishers.Packa gePublisher.PackageList) – shane87 2011-03-30 10:55:45

0

聽起來你混淆了兩個不同的功能:

tcp://localhost:21234

這對於像CCTray客戶端的默認遠程端口。這不用於IIS網站(儀表板)。

Configuration document is likely missing Xml nodes required for properly populating CruiseControl co nfiguration. Missing Xml node (packageList) for required member (ThoughtWorks.CruiseControl.Core.Publishers.Package Publisher.PackageList)

您的示例配置缺失packageList節點。

+0

我已經添加了packageList節點,現在出現以下錯誤:project'project1'的內部驗證失敗:路徑中的Ilegal字符 – shane87 2011-03-30 12:57:54

+0

只是猜測:也許CC.Net不喜歡你的路徑中的括號('(',')')。嘗試使用短路徑(C:\ Progra〜1 \ ...)。 – 2011-03-30 14:22:58

0

誤導性錯誤信息。港口真的是21234,而不是82.我得到了同樣的錯誤。解決的辦法是從桌面快捷方式啓動ccnet.exe,發現真正的問題是我ccnet.config文件中的非法代碼。

修復ccnet.config文件後,問題繼續。當試圖構建時,系統不會讓Subversion客戶端修改簽出的repo中的只讀標記文件。

0

在我的情況下,我在ccnet.config中打印項目配置文件名而不是timescheduler.config它是timesheduler。當我修復文件名時,我能夠運行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>