我已经看到并通过了this site但最终出现了错误
在服务中我有网络方法
[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有关,但我对此感到困惑,无法继续。
答案 0 :(得分:2)
您无法真正超载Web服务操作。用于描述SOAP Web服务(WSDL和XSD)的语言没有重载概念。
通过设置MessageName
属性的WebMethod
属性,您有时可以使用黑客攻击。但是,这会破坏WS-I BP1合规性,因为您的错误消息明确指出。 WS-I BP1禁止使用这种“重载”,因为并非所有Web服务堆栈都支持它。
解决方案是放弃并为每种方法使用不同的名称。
仅供参考,SOAP也没有其他编程语言结构的概念,如默认参数,索引器,泛型,枚举等。它不是面向对象的,所以不要停留在使用面向对象的概念或概念最喜欢的编程语言当然,这些可以用于服务的实现,但不能用于它的定义。
答案 1 :(得分:0)
您需要使用新名称创建方法。您可以在webservices中编写和编译重载方法,但是当生成WSDL时它将无法工作。有一种替代方法可以实现这一目标,其中描述了here
答案 2 :(得分:0)
您需要从Web服务中删除[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]