将自定义Web服务部署到sharepoint服务器(2007/2010)?

时间:2010-01-14 06:34:16

标签: sharepoint sharepoint-2007 sharepoint-2010

根据MSDN,为了部署自定义Web服务,我们需要创建* wsdl.aspx和* disco.aspx文件,并将它们与.asmx放在_vti_bin文件夹下(C:\ Program Files \ Common Files \ Microsoft Shared) \ Web Server Extensions \ 14 \ isapi)。并将dll放在sharepoint虚拟目录根目录的bin文件夹下。它适用于我。

但是,我还发现,如果我将.asmx文件放在根虚拟目录下,而不创建那些* wsdl.aspx和* disco.aspx文件。它可以比上面的方式更好地工作。所以我想知道这种方式的潜在问题是什么?

3 个答案:

答案 0 :(得分:2)

如果没有WSDL和DISCO文件,人们的Web服务客户/消费者可能很难“发现”您的服务合同。如果您不关心这一点,请不要担心。

答案 1 :(得分:1)

我在SharePoint 2007中创建了几个简单部署为http://.../_layouts/mySubFolder/service.asmx的Web服务。有用!对于SharePoint,表示层是Web服务的HTML还是XML无关紧要(在两种情况下都必须应用安全性,可以http://server/_layouts/mySubFolder/service.asmxhttp://server/sites/subsite/_layouts/mySubFolder/service.asmx

来解决

错误的事情

  • “布局”一词意味着“与它的外观有关”......当我们谈论网络服务时并非如此
  • 迁移到使用WCF服务的SPS2010时,它会有所不同。但是,我还没有玩过SPS2010并且还不知道,有多么不同。 (在这里约会 - http://blog.mastykarz.nl/wcf-sharepoint-context/

答案 2 :(得分:0)

相当古老的帖子,但我只是想添加到此,因为我不相信迄今为止的回复会提供有关SharePoint以这种方式设置的相关详细信息。

将Web服务部署到ISAPI \ _vti_bin for SharePoint的原因是,对此文件夹的请求进行了特定修改,以允许SharePoint根据服务的当前虚拟路径为服务构建准确的发现和WSDL文件,而不是IIS站点中的路径。

更具体地说,wsdisco.aspx和wswsdl.aspx处理对此虚拟目录的请求,并将调用相关的disco.aspx和wsdl.aspx,以根据当前的SharePoint URL正确生成发现xml或wsdl xml。

如果您为http://sharepointsite.com/sitecol/subsite/_vti_bin/lists.asmx项目添加服务引用,则该网址上发出的请求的上下文将与您期望的/ sitecol / subsite相关。

但是,如果您向http://sharepointsite.com/sitecol/subsite/ _layouts / MyCustSvc.asmx 添加服务引用,则上下文将固定为http://sharepointsite.com/,因为ASP.NET的默认wsdl生成器不是了解SharePoint虚拟路径。在这种情况下,对服务中的SPContext的调用将无法按预期工作。

这里有一篇很好的帖子,其中有一些例子说明了这一点: Where do you deploy custom SharePoint web service files to?