Sle*_*idi 71 .net c# wcf overloading
假设这是一个 ServiceContract
[ServiceContract]
public interface MyService
{
[OperationContract]
int Sum(int x, int y);
[OperationContract]
int Sum(double x, double y);
}
Run Code Online (Sandbox Code Playgroud)
在C#中允许方法重载,但WCF不允许您重载operation contracts
托管程序将抛出一段InvalidOperationException时间托管
Dav*_* Z. 98
简而言之,您不能重载方法的原因与WSDL不支持C#中存在的相同重载概念这一事实有关.以下帖子提供了为什么不可能这样做的详细信息.
http://jeffbarnes.net/blog/post/2006/09/21/Overloading-Methods-in-WCF.aspx
要解决此问题,您可以显式指定该Name属性OperationContract.
[ServiceContract]
public interface MyService
{
[OperationContract(Name="SumUsingInt")]
int Sum(int x, int y);
[OperationContract(Name="SumUsingDouble")]
int Sum(double x, double y);
}
Run Code Online (Sandbox Code Playgroud)
Wik*_*hla 28
因为在通过HTTP/SOAP调用时,在合同中使用相同的方法名称意味着无法确定客户端将要调用哪个特定方法.
请记住,在通过http调用Web方法时,参数是可选的,如果缺少,则使用默认值进行初始化.这意味着两种方法的调用在HTTP/SOAP上看起来完全相同.
| 归档时间: |
|
| 查看次数: |
27141 次 |
| 最近记录: |