Приложение, запущенное в отладчике, подключается к веб-сервису, но не при запуске в качестве службы Windows - PullRequest
1 голос
/ 01 февраля 2012

Я создал приложение на C #, которое я запускаю в качестве службы Windows. Это отлично работает.

Я недавно изменил его, чтобы он подключался к веб-службе. При запуске в Studio этот новый код работает нормально и подключается к веб-службе. Однако, когда я запускаю программу в качестве службы Windows (на том же компьютере), время ожидания программы истекает, поскольку она не может подключиться к веб-службе (исключение - невозможно подключиться к удаленному серверу).

Кто-нибудь может подумать, почему это может происходить?

Исключение при запуске в качестве службы:

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)

Веб-сервис был просто добавлен в проект обычным способом в разделе «Веб-ссылки». Веб-сервис корректно работает в Studio.

Соответствующая часть exe.config показана ниже (мне пришлось изменить имя сервера, извините):

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

Большое спасибо.

1 Ответ

1 голос
/ 01 февраля 2012

Где работает веб-сервис? Какой тип аутентификации (если есть) требуется? Если ваша служба Windows работает под локальной учетной записью (такой как системная или сетевая служба), то она может не иметь необходимых разрешений для подключения к чему-либо удаленному.

Если это так, то вам нужно запустить службу Windows под учетной записью домена и дать этой учетной записи разрешения на общение с веб-службой или вообще удалить аутентификацию.

Когда вы выполняете свой код в Visual Studio, вы работаете в контексте своих собственных учетных данных, которых, я полагаю, достаточно для доступа к веб-службе.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...