我无法理解如何 ListData.svc 可以使用IE8和IE9进行调试。

我有一个如下所示的网址:hostname:8181/_vti_bin/listdata.svc/ImageBanners?$filter=endswith(Path,'TopLeft') 并显示 eq true

当我尝试从 SharePoint 独立服务器使用 IE8 访问它时,我收到错误 400。

当我使用 Firefox 请求相同的 URL 时,它工作得很好。

最重要的是 hostname:8181/_vti_bin/listdata.svc/ImageBanners 即使在 IE 中也能正常工作。所以问题似乎出在 $filter=endswith 部分。

然而。当我使用服务器 IP 地址或本地主机在 IE8 中请求相同的 URL 时,即使使用复杂的过滤器,我也会得到正确的结果。

请问有人可以解开这个谜团吗?为什么我会出现这种行为?

附加信息:

  • SharePoint 安装了俄语和英语版本。
  • SharePoint 应用程序正在使用 NTLM 身份验证。
  • IIS 中的匿名身份验证已禁用。
  • Fiddler 显示每个资源都被请求两次。服务器第一次返回 401,然后根据浏览器和 URL 返回 200 或 400(请参阅上面的详细信息)。

    • 当我访问时 ListData.svc 使用 Firefox 正确的 HTTP 请求如下所示:

    接受:文本/html,应用程序/xhtml+xml, /
    接受语言:en-US
    用户代理:Mozilla/5.0(兼容;MSIE 9.0;Windows NT 6.1;哇64;三叉戟/5.0)
    接受编码:gzip、压缩
    联系:活着
    曲奇饼:WSS_KeepSessionAuthenticated={b3987daa-d463-415f-8fb3-d556c27e5bbf}
    主持人:本地主机:8181
    授权:NTLM TlRMTVNTU...

    • 使用 IE8 时 HTTP 请求看起来像(注意 lcid=1049. 。也许这可能是问题所在?):

    接受:图像/jpeg、图像/gif、图像/pjpeg、应用程序/x-ms-application、应用程序/xaml+xml、应用程序/x-ms-xbap、 /
    接受语言:en-US
    用户代理:Mozilla/4.0(兼容;MSIE 7.0;Windows NT 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、压缩
    联系:活着
    曲奇饼:lcid=1049;WSS_KeepSessionAuthenticated={b3987daa-d463-415f-8fb3-d556c27e5bbf}
    授权:NTLM TlRMTVNTU...
    主持人:主机名:8181

有帮助吗?

解决方案

我终于把它固定下来了。原来是SharePoint的REST的功能。我需要采取 用户界面语言 考虑在内!

例如,在 en-us 语言环境的情况下,REST 查询应如下所示:

?$过滤器=结束(小路,'文件夹名称')

但在 ru-ru 中它变成:

?$过滤器=结束(普鲁特,'文件夹名称')

此外,您需要转义俄语字母。所以,最后它应该看起来像这样:

?$过滤器=结束(%D0%9F%D1%83%D1%82%D1%8C",'文件夹名称')

然而,这并不是唯一的问题......我收到的 JSON 也被本地化了。我的意思是属性有 不同的本地化名称。例如,返回 en-us 中的 JSON:

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

鲁鲁语:

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

这是一个问题,因为很难预测不同语言的属性名称。我希望此信息对某人有有用的警告。

许可以下: CC-BY-SA归因
scroll top