Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/sharepoint/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么SharePoint将URL从其他web应用程序更改为当前web应用程序,以及如何避免这种情况_Sharepoint - Fatal编程技术网

为什么SharePoint将URL从其他web应用程序更改为当前web应用程序,以及如何避免这种情况

为什么SharePoint将URL从其他web应用程序更改为当前web应用程序,以及如何避免这种情况,sharepoint,Sharepoint,我正在使用sharepoint对象模型开发一个web部件,从不同web应用程序中的列表中获取列表项,我做到了 protected override void CreateChildControls() { SPSite site = new SPSite("http://myhost/"); ListViewByQuery lview = new ListViewByQuery(); SPWeb web = site.OpenWeb(); lview.List =

我正在使用sharepoint对象模型开发一个web部件,从不同web应用程序中的列表中获取列表项,我做到了

protected override void CreateChildControls()
{
    SPSite site = new SPSite("http://myhost/");
    ListViewByQuery lview = new ListViewByQuery();
    SPWeb web = site.OpenWeb();
    lview.List = web.Lists["Tasks"];
    lview.Query= new SPQuery(lview.List.Views["All Tasks"]);    
    this.Controls.Add(lview);
}

当我在除“”以外的web应用程序中使用我的web部件时,我将在“”中使用它,它会将所有URL替换为“myhost”为“mysite”,为什么要这样做,以及如何绕过它。

我已经在同一服务器上测试了您的代码查询不同的web应用程序,并且可以重现您描述的问题。之所以出现这种情况,是因为SharePoint呈现的是页面的相对URL,而不是绝对URL。因此,它错误地链接到当前的web应用程序

不幸的是,根据Reflector,SharePoint对该渲染的实际操作是模糊的。看起来,Microsoft并不打算对其他web应用程序使用此控件。在本例中,我解决问题的方法是使用jQuery(,)或HTTP模块来更正URL

(请注意,两者都存在支持性问题……Microsoft可能会在将来的service pack或版本中更改此控件的输出方式,这将破坏您的自定义代码。)

编辑:根据Kit的评论更正


编辑2:重写。

我已经测试了您的代码,在同一台服务器上查询不同的web应用程序,可以重现您描述的问题。之所以出现这种情况,是因为SharePoint呈现的是页面的相对URL,而不是绝对URL。因此,它错误地链接到当前的web应用程序

不幸的是,根据Reflector,SharePoint对该渲染的实际操作是模糊的。看起来,Microsoft并不打算对其他web应用程序使用此控件。在本例中,我解决问题的方法是使用jQuery(,)或HTTP模块来更正URL

(请注意,两者都存在支持性问题……Microsoft可能会在将来的service pack或版本中更改此控件的输出方式,这将破坏您的自定义代码。)

编辑:根据Kit的评论更正


编辑2:重写。

查看这篇关于Content Monster Web部件的文章()。它可能解决了您的问题,或者至少给了您一个想法。

查看这篇关于Content Monster Web部件的文章()。它可能解决了您的问题,或者至少给了您一个想法。

正如Alex所写,您不能使用SharePoint对象模型从其他网站集获取数据,而不是您当前所在的网站集。我建议使用内置的Web服务(更具体地说,是Lists.asmx方法)来检索数据。

正如Alex所写,您不能使用SharePoint对象模型从其他网站集获取数据,而不是您当前所在的网站集。我建议使用内置的Web服务(更具体地说,是Lists.asmx方法)来检索数据。

如果我错了,请纠正我。。。但您可以访问其他网站集中的数据,只要这些数据位于同一web应用程序中。我认为您在这里不是指网站集。@Kit您如何使用SPQuery跨网站集进行查询。也许我错了,但我相信SPQuery有一个特定列表的边界。有一个SPSiteDataQuery API用于跨网站集中的列表进行查询。我不知道任何允许跨网站集查询的内容。现在重写答案以解决所问的特定问题。但是,您可以查询不同的网站集,但一次只能查询一个-不可能跨网站集查询。如果我错了,请更正我。。。但您可以访问其他网站集中的数据,只要这些数据位于同一web应用程序中。我认为您在这里不是指网站集。@Kit您如何使用SPQuery跨网站集进行查询。也许我错了,但我相信SPQuery有一个特定列表的边界。有一个SPSiteDataQuery API用于跨网站集中的列表进行查询。我不知道任何允许跨网站集查询的内容。现在重写答案以解决所问的特定问题。但是,您可以查询不同的网站集,但一次只能查询一个-不可能跨网站集进行查询。Web服务是一个好主意,但需要进行一些更正。首先,它是“Lists.asmx”。第二,正如我在下面Alex的回答中提到的,您可以跨网站集检索数据,但不能跨Web应用程序检索数据。感谢您的更正和编辑@(Web服务名称是您不能输入错误的地方:P)。像JD一样,我仍然不相信您可以使用对象模型跨网站集检索数据。。。或者至少,我不知道该怎么做。您能给我们举个例子吗?Web服务是一个好主意,但有几处需要更正。首先,它是“Lists.asmx”。第二,正如我在下面Alex的回答中提到的,您可以跨网站集检索数据,但不能跨Web应用程序检索数据。感谢您的更正和编辑@(Web服务名称是您不能输入错误的地方:P)。像JD一样,我仍然不相信您可以使用对象模型跨网站集检索数据。。。或者至少,我不知道该怎么做。你能给我们举个例子吗?