Вопрос

У меня проблемы с пониманием того, как ListData.svc можно отлаживать с помощью IE8 и IE9.

У меня есть URL-адрес, который выглядит следующим образом:hostname:8181/_vti_bin/listdata.svc/ImageBanners?$filter=endswith(Path,'TopLeft') и показать уравнение true

Когда я пытаюсь получить к нему доступ с помощью IE8 с автономного сервера SharePoint, я получаю ошибку 400.

Когда я запрашиваю тот же URL-адрес с помощью Firefox, он работает нормально.

Более того hostname:8181/_vti_bin/listdata.svc/ImageBanners работает как надо даже в IE.Так что проблема видимо в $filter=endswith часть.

Однако.Когда я запрашиваю тот же URL-адрес в IE8, используя IP-адрес сервера или локальный хост, я получаю правильные результаты даже при использовании сложных фильтров.

Может кто-нибудь, пожалуйста, пролить свет на эту тайну?Почему у меня такое поведение?

Дополнительная информация:

  • У SharePoint установлена ​​русская и английская версия.
  • Приложение SharePoint использует проверку подлинности NTLM.
  • Анонимная аутентификация в IIS отключена.
  • Fiddler показывает, что каждый ресурс запрашивается дважды.В первый раз сервер возвращает 401, а затем 200 или 400 в зависимости от браузера и URL-адреса (подробности см. выше).

    • Когда я получаю доступ ListData.svc использование правильного HTTP-запроса Firefox выглядит следующим образом:

    Принимать:текст/html, приложение/xhtml+xml, /
    Принять-Язык:ru-US
    Пользователь-Агент:Mozilla/5.0 (совместим;МСИЕ 9.0;Windows НТ 6.1;ВАУ64;Трезубец/5.0)
    Принять-кодирование:gzip, сдуть
    Связь:Keep-Alive
    Файл cookie:WSS_KeepSessionAuthenticated={b3987daa-d463-415f-8fb3-d556c27e5bbf}
    Хозяин:локальный хост: 8181
    Авторизация:NTLM TlRMTVNTU...

    • При использовании HTTP-запроса IE8 выглядит так (обратите внимание lcid=1049.может в этом проблема?):

    Принимать:изображение/jpeg, изображение/gif, изображение/pjpeg, приложение/x-ms-приложение, приложение/xaml+xml, приложение/x-ms-xbap, /
    Принять-Язык:ru-US
    Пользователь-Агент:Mozilla/4.0 (совместим;МСИЭ 7.0;Windows НТ 6.1;ВАУ64;Трайдент/5.0;SLCC2;.NET CLR 2.0.50727;.NET4.0C;.NET4.0E;.NET CLR 3.5.30729;.NET CLR 3.0.30729;ИнфоПат.3)
    Принять-кодирование:gzip, сдуть
    Связь:Keep-Alive
    Файл cookie:лцид=1049;WSS_KeepSessionAuthenticated={b3987daa-d463-415f-8fb3-d556c27e5bbf}
    Авторизация:NTLM TlRMTVNTU...
    Хозяин:имя хоста: 8181

Это было полезно?

Решение

Я наконец-то это зафиксировал.Оказалось, что это особенность REST SharePoint.мне нужно было взять язык пользовательского интерфейса во внимание!

Например, в случае локали en-us запрос REST должен выглядеть так:

?$filter=endswith(Путь,'Имя папки')

А вот в ру-ру становится:

?$filter=endswith(Путь,'Имя папки')

Более того, вам нужно избегать русских букв.Итак, в конечном итоге это должно выглядеть так:

?$filter=endswith(%D0%9F%D1%83%D1%82%D1%8C",'Имя папки')

Однако это не единственная проблема...JSON, который я получаю, также оказывается локализованным.Под этим я подразумеваю, что свойства имеют разные локализованные имена.Например, вернул JSON в en-us:

{..."ModifiedById":1, "CopySource":null, "ApprovalStatus":"0","Path":"/Lists/ImageBanners/BottomRight"...}

на ру-ру:

{...."КемИзмененоId":1,"ИсточникКопии":null,"СостояниеУтверждения":"0","Путь":"/Lists/ImageBanners/BottomRight"...}

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с sharepoint.stackexchange
scroll top