Сервис, разработанный на 32-битной Windows XP Pro, не работает на 64-битной Windows Server 2003 - PullRequest
0 голосов
/ 13 марта 2009

Служба Windows была разработана и работает на 32-битной машине. Он связывается с веб-сервисом Project Web Access. Теперь служба была перемещена на тот же компьютер, что и веб-служба Project Web Access. Код не работает, и я получаю эту ошибку:

System.Net.WebException: запрос не выполнен с HTTP-статусом 401: Несанкционированное. в System.Web.Services.Protocols.SoapHttpClientProtocol.ReadResponse (SoapClientMessage сообщение, ответ WebResponse, поток responseStream, Boolean asyncCall)
в System.Web.Services.Protocols.SoapHttpClientProtocol.Invoke (String methodName, Object [] параметры) в ProjToolService.ProjectWebSvc.Project.ReadProject (Guid projectUid, DataStoreEnum dataStore)
в ProjToolService.Queue.AssignResource (Guid queueId, Guid projectId, Guid taskId, Guid resourceId, Guid assignmentId)

Это может быть не 32-битная, а 64-битная версия, но у меня нет других идей.

Целевая платформа - x86, но она также не смогла использовать AnyCPU. Я пытался использовать DefaultCredentials и System.net.CredentialCache.DefaultNetworkCredential.

Ответы [ 4 ]

3 голосов
/ 13 марта 2009

401 - это статус HTTP, поэтому он не должен иметь ничего общего с 32-битным или 64-битным. Я бы проверил и удостоверился, что веб-сервис настроен с использованием правильных кредитов (особенно, если вы планируете использовать анонимный доступ).

Если я правильно помню, DefaultNetworkCredential извлекает учетную запись, на которой запущена служба, поэтому я хотел бы убедиться, что учетная запись для используемой службы имеет соответствующие полномочия для доступа к веб-службе. Простой способ проверить это - дать учетной записи, на которой запущена служба, административный доступ к компьютеру (а затем убрать его, когда закончите). если это работает, то это проблема с разрешениями. Если нет, то вы знаете, что это что-то еще.

Чтобы предоставить права учетной записи, перейдите в Администрирование -> Управление компьютером -> Локальные пользователи и группы -> Группы. Добавьте пользователя сети в соответствующую группу (как я уже сказал, я начну с администратора и продолжу свой путь).

0 голосов
/ 23 марта 2009

Спасибо за всю помощь и внимание, но я наконец обнаружил проблему. Проблема заключалась в том, что служба win работала локально с веб-службой. Эта проблема была характерна для операционной системы Windows Server 2003. Чтобы решить проблему, мне пришлось создать новое значение в редакторе реестра с именем DisableLoopbackCheck и установить его равным 1.

0 голосов
/ 16 марта 2009

Настройки безопасности на Win2003 гораздо более консервативны, чем в WinXP, особенно в сетевом доступе. Возможно, вам лучше будет просмотреть в журналах веб-службы и системы сообщения об ошибках «отказано в доступе» и убедиться, что вашей службе (с ее точным именем до ? в URL) разрешен доступ к запросам на обслуживание.

0 голосов
/ 13 марта 2009

От какого пользователя работает ваш сервис? Помните, что Локальный пользователь и т. Д. Не запускаются, когда окно не зарегистрировано, какие серверы обычно не работают. Пользователь сети может работать.

...