为什么owssvr.dll会为我的列表返回一个空结果?

时间:2011-03-24 17:50:54

标签: sharepoint sharepoint-2007

我正在尝试在SharePoint 2007中使用owssvr.dll and its URL API来获取一些列表元数据。对于我感兴趣的网站中的大多数列表,我可以使用如下格式的网址:

http://hts-app1/compounds/_vti_bin/owssvr.dll?XMLDATA=1&List={F987723C-28A4-47D3-83D7-19094B0267DF}

我找回了默认视图的基于xml的字段元数据列表以及列表中的记录列表。但是当我尝试使用另一个guid作为单独的列表时,我从Web服务器得到一个空响应。这是一个200响应代码,但其他标题看起来像:

Connection:close
Date:Thu, 24 Mar 2011 17:38:46 GMT
MicrosoftSharePointTeamServices:12.0.0.4518
Server:Microsoft-IIS/6.0
X-Powered-By:ASP.NET

我很确定列表guid是有效的,因为我可以将它与我在listit.aspx页面中可以看到的列表的guid相匹配。如果我也像这样格式化我的网址:

http://hts-app1/compounds/_vti_bin/owssvr.dll?XMLDATA=1&List={F987723C-28A4-47D3-83D7-19094B0267DF}&Query=*

使用Query=*参数,我可以获得有效的xml,但它只显示所有内容,而不是针对我的视图进行过滤,我真的很想拥有该视图。

我查看了SharePoint日志文件,但找不到与此请求相关的任何内容。

那么,我该怎么调试呢?我真的很想使用简单的http GET请求来获取这些元数据,而owssvr.dll似乎是理想的机制。

2 个答案:

答案 0 :(得分:1)

您也可以指定特定视图。喜欢这个

http://{0}/_vti_bin/owssvr.dll?Cmd=Display&List={1}&view={2}&XMLDATA=TRUE

例如:

https://foo.com/extranet/_vti_bin/owssvr.dll?Cmd=Display&List=%7B7F7AFB9D%2D6D5D%2D4626%2DBD9D%2D085957DB79AB%7D&view=%7B111EC07E%2DF648%2D443B%2D8DE6%2DB53786BE6762%7D&XMLDATA=TRUE

获取列表和查看guid的最简单方法是转到编辑视图并抓取列表&直接从地址栏查看信息。

答案 1 :(得分:0)

1。在URL的查询字符串中提供GUID适用于一个列表但不适用于其他列表可能是因为列表位于不同的站点上。验证网站名称是否正确,GUID确实是列表ID。

但请注意,上述情况适用于SharePoint 2007和2010,对于SharePoint 2010,可能需要执行其他措施,具体取决于您在owssvr.dll上执行命令的上下文。

<强> 2 query=*不是过滤器参数;它显示了列表中所有可用列的架构和数据,包括SharePoint内部列,通常您从不以编程访问以外的方式查看。

第3 仅获取当前默认视图中可见的列,在owssvr.dll上调用display命令,同时xmldata参数设置为true;像这样:

http://hts-app1/compounds/_vti_bin/owssvr.dll?Cmd=Display&List={F987723C-28A4-47D3-83D7-19094B0267DF}&XMLDATA=TRUE

此外,这仅适用于SharePoint 2007,并且取决于执行上下文。

<强> 4

  

使用Query = *参数,我可以得到   有效的xml,但它只是显示   一切,而不是我的过滤   看来,我真的很想拥有   图。

哦,但这不叫过滤;过滤仅基于列值。为此,请使用额外的FilterField1和FilterValue1参数。

http://hts-app1/compounds/_vti_bin/owssvr.dll"
            + "?Cmd=Display&List={F987723C-28A4-47D3-83D7-19094B0267DF}"
            + "&XMLDATA=TRUE&FilterField1=YOUR_FILTER_COLUMN_NAME&FilterValue1"
            + YOUR_FILTER_COLUMN_VALUE

在浏览器中测试之前起飞“(双引号)和+(加号)和(返回)。