1

我们正在将我们的站点从 SP2007 迁移到 SP2010。我们的解决方案中包含一个 Web 服务,它包含在一个 .ASMX 文件中。我知道我们应该使用 WCF,但是我们没有时间将这个 Web 服务转换为使用它,而且这个项目是从该公司的一位前开发人员那里继承的,所以我们仍在尝试理解这个代码的架构。

我们遇到的问题是,当我们调用服务时收到警告,说明“此 Web 服务正在使用http://tempuri.org/作为其默认命名空间”。

调用 Web 服务时显示错误的屏幕截图

我们已经在 Web 服务的定义中更改了命名空间属性,如下所示:

[WebService(Namespace = "http://localhost")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
[ScriptService]
public class searchService : WebService
{
    [WebMethod]
    [ScriptMethod(ResponseFormat = ResponseFormat.Json)]
    public resultWrapper search(string query)
    {
        ....
    }
}

但是,当我们查看 Web 服务的 WSDL 时,我们会得到以下信息:

<wsdl:definitions targetNamespace="http://tempuri.org"><wsdl:types/><wsdl:service 
name="search"/></wsdl:definitions>

我们已经撤回了原始解决方案,执行了“干净的解决方案”操作并重新部署了解决方案,但到目前为止没有任何效果。我们不知道我们需要做什么来强制 WSDL 根据我们在 Web 服务定义中提供的名称空间进行自我更新,或者如果有其他地方我们需要修改 WSDL 信息更新的设置。

4

1 回答 1

0

所以我们团队的另一位开发人员已经解决了这个问题。

事实证明,除了更新 .asmx.cs 文件中的命名空间之外,还需要更新 .asmx 页面中的 codeBehind 和 class 属性。

基本上,codeBehind 属性需要指向我们的 .asmx.cs 文件,而 Class 属性需要正确匹配我们正在使用的命名空间和类。它引发错误,因为它指向 SharePoint 默认命名空间和类。

于 2013-01-28T22:29:39.317 回答