Question

I'm using CC.NET 1.6 server and its corresponding CCTray connecting happily via remoting but need to change to use the dashboard connection via HTTP so that I can start farming the URL out to developers.

Putting my dashboard URL into CCTray:

http://localhost/CruiseControl/server/local/ViewServerReport.aspx

Results in CCTray returning

Failed to connect to server: The remote server returned an error: (500) Internal Server Error.

If I check my IIS logs, I can see the request was turned into a POST to this location and the log confirms the 500 response.

/CruiseControl/server/local/ViewServerReport.aspx/server/localhost/RawXmlMessage.aspx

If I navigate to that URL via GET - I get some Xml with error "Unable to process error: Root element is missing". This could be an artifact of me doing a GET instead of a POST of course.

Note: Yes I am using localhost in the URL as it is all contained on the one machine at the moment, if I can get this to work then I will of course change to use better hostname.

Was it helpful?

Solution

Worked this out after upgrading to cc.net 1.8

1) Check dashboard.config for server name

Use fiddler to watch the request go through and observe the dashboard server name

http://localhost/CruiseControl/server/yourdomain.com/ViewServerReport.aspx

In the above case it is yourdomain.com

Open your dashboard.config and make sure there is an entry with the same name

<server name="yourdomain.com" url="tcp://localhost:21234/CruiseManager.rem" allowForceBuild="true" allowStartStopBuild="true" backwardsCompatible="false" />

2) Check IIS request validation

Check your application pool for Cruise Control's IIS. If it is .NET 4.0 then you need this in your web.config

<httpRuntime requestValidationMode = "2.0" />

That config is sitting in cc.net 1.8 web.config but needs uncommenting

3) Try again, you should be good - if not observe responses in fiddler

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top