共享点站点下的Web服务中的SPContext.Current为null

时间:2010-02-17 18:54:40

标签: sharepoint web-services

我在SharePoint网站中公开了一个Web服务,例如http://server/_vti_bin/subdir/mywebservice.asmx

在网络服务方法中,SPContext.Current似乎为空。

(有趣的是,我正在查看Inside Windows SharePoint Services 3.0第5章中的一个示例,他们在Web服务中使用SPContext.Current!)

知道我错过了什么吗?提前谢谢。

3 个答案:

答案 0 :(得分:2)

我看到SPContext.Current = null的唯一一次是在不存在的虚拟位置(即只有一半正确的URL)调用webservice时。

在您的问题规范中,您提到“_vti_bin / subdir”。我还没有在SharePoint中托管的WebService中看到过这个subdir构造(免责声明:我的知识仅限于SharePoint中自定义Web服务的2或3个工作实现)

通常,你

  • 将asmx直接放入12 hive的ISAPI文件夹中。这将映射到_vti_bin。
  • 将程序集(如果有)放入GAC(或网站bin中,但我建议使用GAC,直到您完成基础知识并运行)
  • 如果确实需要,可以进行发现,但是对于测试,这不是必需的

它可能根本不相关,但我仍然试图先从_vti_bin开始工作,然后然后尝试使用子文件夹。 SharePoint的url虚拟化可能很痛苦。

答案 1 :(得分:0)

您的子目录是否可能设置为Web应用程序,因此在不同的上下文中运行?

答案 2 :(得分:0)

你是如何打电话给网络服务的?这是来自javascript / jquery的ajax调用吗?如果是,您是否在Web服务类上添加了ScriptService属性?

[System.Web.Scripts.Services.ScriptService]
public class SimpleWebService : System.Web.Services.WebService
{
    ...
    ...
}