ошибка при вызове пользовательского веб-сервиса из плагина - PullRequest
1 голос
/ 13 февраля 2009

Я пытаюсь вызвать мой пользовательский веб-сервис, который развернут как часть CRM4 и получил следующую ошибку:

Client found response content type of 'text/html; charset=utf-8', but expected 'text/xml'.
    The request failed with the error message:
    --
        <html>
            <head>
                <title>No Microsoft Dynamics CRM user exists with the specified domain name and user ID</title>
                <style>
        ...
                </style>
            </head>

            <body bgcolor="white">

                    <span><H1>Server Error in '/RecurrenceService' Application.<hr width=100% size=1 color=silver></H1>

                    <h2> <i>No Microsoft Dynamics CRM user exists with the specified domain name and user ID</i> </h2></span>

        ...

        <table width=100% bgcolor="#ffffcc">
                       <tr>
                          <td>
        [CrmException: No Microsoft Dynamics CRM user exists with the specified domain name and user ID]
           Microsoft.Crm.Authentication.WindowsAuthenticationProvider.Authenticate(HttpApplication application) +895
           Microsoft.Crm.Authentication.AuthenticationStep.Authenticate(HttpApplication application) +125
           Microsoft.Crm.Authentication.AuthenticationPipeline.Authenticate(HttpApplication application) +66
           Microsoft.Crm.Authentication.AuthenticationEngine.Execute(Object sender, EventArgs e) +513
           System.Web.SyncEventExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +92
           System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +64

                          </td>
                       </tr>
                    </table>

                    <br>

                    <hr width=100% size=1 color=silver>

                    <b>Version Information:</b> Microsoft .NET Framework Version:2.0.50727.1433; ASP.NET Version:2.0.50727.1433

                    </font>

            </body>
        </html>
        <!-- 
        [CrmException]: No Microsoft Dynamics CRM user exists with the specified domain name and user ID
           at Microsoft.Crm.Authentication.WindowsAuthenticationProvider.Authenticate(HttpApplication application)
           at Microsoft.Crm.Authentication.AuthenticationStep.Authenticate(HttpApplication application)
           at Microsoft.Crm.Authentication.AuthenticationPipeline.Authenticate(HttpApplication application)
           at Microsoft.Crm.Authentication.AuthenticationEngine.Execute(Object sender, EventArgs e)
           at System.Web.HttpApplication.SyncEventExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute()
           at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously)
        -->
        --.

Код для звонка на мой веб-сервис:

RecurrenceService serv = new RecurrenceService();
serv.Credentials = System.Net.CredentialCache.DefaultCredentials;
string result = serv.UpdateSeries();

CRM4 url: http://cw-dev-5/loader.aspx

URL пользовательского сервиса: http://cw-dev-5/RecurrenceService/RecurrenceService.asmx

Следующий фрагмент кода System.Security.Principal.WindowsIdentity.GetCurrent().Name возвращает NT AUTHORITY\NETWORK SERVICE (я полагаю, это является причиной ошибки)

Может ли кто-нибудь предложить мне какое-либо решение для решения моей проблемы?

Ответы [ 4 ]

0 голосов
/ 17 ноября 2009

Если на вашем сервере CRM есть несколько организаций, вам необходимо указать имя организации в URL:

http://cw-dev-5/SomeOrgName/RecurrenceService/RecurrenceService.asmx

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

Вот некоторая документация MSDN о том, как это работает: Использование URL-адресов Microsoft Dynamics CRM .

0 голосов
/ 13 февраля 2009

Да, веб-сервис, который вызывает службы CRM

URL пользовательского сервиса: "http://cw -dev-5 / RecurrenceService / RecurrenceService.asmx "

Это должно быть зарегистрировано как пользователь crm, как установлено в администраторе пользователя CRM.

Если вы звоните из плагина - это тоже должна быть личность, настроенная пользователем в CRM

0 голосов
/ 07 мая 2009

Может быть, вы используете неанглийскую операционную систему?

Каким-то образом по каким-либо причинам имя входа для сетевой службы иногда локализуется при переводе ОС на другие языки.

В настоящее время многие программы ожидают, что имя входа будет жестко задано как «NT AUTHORITY \ NETWORK SERVICE» - например, в немецкой версии Windows имя учетной записи - «NT-AUTORITÄT \ NETZWERKDIENST». Итак, ваша программа ищет английское имя, не может его найти и выдает ошибку.

Не уверен, относится ли это к вашей проблеме, но, возможно, стоит проверить!

0 голосов
/ 13 февраля 2009

Это вызывает его с сайта ASP.Net? Возможно, вам потребуется изменить удостоверение пула приложений на пользователя домена, который имеет доступ к сайту CRM (в настоящее время он пытается использовать NT AUTHORITY \ NETWORK SERVICE)

...