Почему я получаю 401 несанкционированную ошибку при вызове службы Bing Geocode из SharePoint, а не из приложения WinForms? - PullRequest
2 голосов
/ 05 марта 2012

Я разрабатываю задание таймера SharePoint для геокодирования некоторых списков адресов, хранящихся на нашем сайте SharePoint.

Я использую код на основе этого образца MSDN для выполнения фактического геокодированияrequest.

Проблема, с которой я сталкиваюсь, заключается в том, что при вызове службы из SharePoint 2010 (работающей локально) я получаю взамен несанкционированную ошибку 401.

Интересно, что я также создал небольшие winformsприложение, которое делает то же самое (но без SharePoint / IIS), используя тот же код, который работает отлично.

Я устанавливаю учетные данные одинаково для обоих приложений следующим образом:

request.Proxy.Credentials = CredentialCache.DefaultCredentials;

Я корпоративный пользователь, и я использую один и тот же ключ в обоих приложениях - но одно работает, а другое нет - есть идеи, почему это может быть?Может быть, мне нужно что-то установить в IIS?

Я попытался установить Pipelined = false для запроса, который был предложением, о котором я читал, но он, похоже, не работал.

Любойпредложения с благодарностью приняты.

1 Ответ

1 голос
/ 13 сентября 2012

Похоже, вы решили это путем изменения идентификатора пула приложений.

Другой способ сделать это - сказать, что вызов веб-службы должен выполняться с использованием идентификатора пользователя, отправившего запросв SharePoint.Для этого попробуйте что-то вроде:

 using (((WindowsIdentity)HttpContext.Current.User.Identity).Impersonate())
 {
    WCFTestService.ServiceClient myService = new WCFTestService.ServiceClient();
    Response.Write(myService.GetData(123) + "<br/>");
    myService.Close();
 }
...