2010-01-14 315 views
2

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

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

回答

1

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

事情是的事情来解决它

  • 的“布局”这个词意味着“是与它的样子”。当我们谈论的Web服务,这是不是这种情况
  • 迁移到SPS2010当其中WCF服务,开始发挥作用,这将是不同,但是我还没有玩过SPS2010,现在还不知道,有多不同出租。 (关于它的服用点这里 - http://blog.mastykarz.nl/wcf-sharepoint-context/
+0

谢谢,部分“再一次它的所有有关背景”,在你的链接回答我的问题。 – leif 2010-01-15 09:05:39

2

没有WSDL和DISCO文件,乡亲们Web服务客户端/消费者可能很难有时间‘发现’服务的合同。如果这不是你的问题,不要担心。

+0

您可以从ASMX获取WSDL – 2010-01-15 08:40:23

+1

如果您尝试从同一主机访问它,则只能获取它。从客户端,您将无法通过ASMX获取WSDL。 – Hinek 2010-09-23 13:52:37

0

相当旧的帖子,但只是想我会加入到这一点,因为我不相信迄今为止的答复给出了为什么SharePoint这样设置的相关细节。

将webservices部署到SharePoint的ISAPI \ vti_bin的原因是因为对此文件夹的请求进行了特定修改,允许SharePoint基于当前的虚拟路径为该服务构建精确的发现和WSDL文件服务,而不是IIS站点中的路径。

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

如果您向http://sharepointsite.com/sitecol/subsite/_vti_bin/lists.asmx的项目添加服务引用,则在该URL上发出的请求的上下文将与您期望的/ 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?