这里主要说的是同名异常:

       [ServiceContract]
public interface IUserInfo
{
[OperationContract]
string ShowName(string name); [OperationContract]
string ShowName();
}

对于以上同名的 OperationContract 如果在客户端引用服务时,将报异常如下:

WCF 之 OperationContract-LMLPHP

解决方法:

 [ServiceContract]
public interface IUserInfo
{
[OperationContract]
string ShowName(string name);           //设置别名
[OperationContract(Name="ShowNameDefault")]
string ShowName();
}

这样客户端引用不报异常,但ShowName的重载,将不起作用,详细引用如下:

WCF 之 OperationContract-LMLPHP

如果需要同名使用ShowName,则需要自定义,而不使用自动生成的:

class UserInfoServiceClient : ClientBase<IUserInfo>, IUserInfo
{
public string ShowName()
{
return this.Channel.ShowNameDefault();
}
public string ShowName(string name)
{
return this.Channel.ShowName(name);
} #region IUserInfo 不实现操作 public Task<string> ShowNameAsync(string name)
{
throw new NotImplementedException();
} public string ShowNameDefault()
{
throw new NotImplementedException();
} public Task<string> ShowNameDefaultAsync()
{
throw new NotImplementedException();
} #endregion }
 static void Main(string[] args)
{
UserInfoServiceClient client = new UserInfoServiceClient(); Console.WriteLine(client.ShowName()); Console.ReadKey();
}
05-06 19:21