这里主要说的是同名异常:
[ServiceContract]
public interface IUserInfo
{
[OperationContract]
string ShowName(string name); [OperationContract]
string ShowName();
}
对于以上同名的 OperationContract 如果在客户端引用服务时,将报异常如下:
解决方法:
[ServiceContract]
public interface IUserInfo
{
[OperationContract]
string ShowName(string name); //设置别名
[OperationContract(Name="ShowNameDefault")]
string ShowName();
}
这样客户端引用不报异常,但ShowName的重载,将不起作用,详细引用如下:
如果需要同名使用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();
}