0

我已经看到并通过了这个网站,但最终出现了一个错误

在此处输入图像描述

在服务中,我有网络方法

[WebMethod(MessageName = "AddWithMoreParam",Description="More parameters", EnableSession=true)]
public bool UpdateMovies(string userName, string role, string movieName, string releaseDate)
{        
    BlogController con = new BlogController();
    BlogInfo info=new BlogInfo();
    info.MovieName=movieName;
    info.ReleaseDate=releaseDate;
    return con.UpdateMovies(info);        
}


[WebMethod(MessageName = "AddWithLessParam", Description = "Less parameters", EnableSession = true)]
public bool UpdateMovies(string movieName, string releaseDate)
{
    BlogController con = new BlogController();
    BlogInfo info = new BlogInfo();
    info.MovieName = movieName;
    info.ReleaseDate = releaseDate;
    return con.UpdateMovies(info);
}

可能问题与 webservicebinding 有关,但我对此感到困惑,无法继续。

4

3 回答 3

2

您不能真正超载 Web 服务操作。用于描述 SOAP Web 服务(WSDL 和 XSD)的语言没有重载的概念。

MessageName通过设置属性的属性,您有时可以使用一种技巧WebMethod。但是,这违反了 WS-I BP1 合规性,正如您的错误消息明确指出的那样。WS-I BP1 禁止使用这种“重载”,因为并非所有 Web 服务堆栈都支持它。

解决方案是放弃并为每种方法使用不同的名称。

仅供参考,SOAP 也没有其他编程语言结构的概念,如默认参数、索引器、泛型、枚举等。它不是面向对象的,所以不要拘泥于使用面向对象的概念或您最喜欢的编程语言中的概念. 当然,这些可以用在你的服务的实现中,但不能用在它的定义中。

于 2013-08-30T05:09:58.887 回答
0

您需要[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]从 Web 服务中删除

于 2013-11-13T05:23:07.080 回答
0

您需要使用新名称创建一个方法。您可以在 web 服务中编写和编译重载方法,但是当生成 WSDL 时,它就不起作用了。有一种替代方法可以实现这一点,此处描述

于 2013-08-30T05:13:45.373 回答