I’ve created an application in C# which I run as a Windows Service. This works fine.
I’ve recently modified it so that it connects to a Web Service. When running in Studio, this new code works fine and connects to the Web Service. However when I run the program as a Windows Service (on the same machine) the program times out as it cannot connect to the Web Service (gives the exception – unable to connect to the remote server).
Can anyone think why this might be happening?
The exception seen when run as a service is:
System.Net.WebException was unhandled
Message="Unable to connect to the remote server"
Source="System"
StackTrace:
at System.Net.HttpWebRequest.GetRequestStream(TransportContext& context)
at System.Net.HttpWebRequest.GetRequestStream()
at System.Web.Services.Protocols.SoapHttpClientProtocol.Invoke(String methodName, Object[] parameters)
at DataExtractionService.uk.co.myserver.Service1.SendEmail(String Message, String Subject, String FromAddress, String[] ToAddress, String[] AttachmentNames, Object[] AttachmentData) in C:\Documents and Settings\administrator.MLR\My Documents\Visual Studio 2005\Projects\DataExtractionService\DataExtractionService\Web References\uk.co.myserver\Reference.cs:line 111
at DataExtractionService.APDataExtractor.EmailReport(String message, String subject) in C:\Documents and Settings\administrator.MLR\My Documents\Visual Studio 2005\Projects\DataExtractionService\DataExtractionService\APDataExtractor.cs:line 610
at DataExtractionService.APDataExtractor.RunDataExtraction() in C:\Documents and Settings\administrator.MLR\My Documents\Visual Studio 2005\Projects\DataExtractionService\DataExtractionService\APDataExtractor.cs:line 63
at DataExtractionService.DataExtractionService.HandleClientComm(Object client) in C:\Documents and Settings\administrator.MLR\My Documents\Visual Studio 2005\Projects\DataExtractionService\DataExtractionService\DataExtractionService.cs:line 96
at System.Threading.ThreadHelper.ThreadStart_Context(Object state)
at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
at System.Threading.ThreadHelper.ThreadStart(Object obj)
The webservice was just added to the project in the normal way under ‘Web References’. The webservice works correctly in Studio.
The relevant part of the exe.config is shown below (I’ve had to change the name of the server, sorry):
<applicationSettings>
<DataExtractionService.Properties.Settings>
<setting name="DataExtractionService_uk_co_myserver_Service1"
serializeAs="String">
<value>https://myserver.co.uk/premieremailservice/Service1.asmx</value>
</setting>
</DataExtractionService.Properties.Settings>
</applicationSettings>
Many thanks.
Where is the web service running? What type of authentication (if any) does it require? If your Windows service is running under a local account (such as System or Network Service) then it may not have the necessary permissions to connect to something remote.
If this is the case then you need to execute the windows service under a domain account and give that account permissions to talk to the web service, or remove authentication altogether.
When you execute your code in Visual Studio you are running in the context of your own credentials, which I assume are enough to reach the web service.