是否可以找到服务和方法的URL?
一个例子:
class MainServiceModel {
public string detailsUrl;
}
class MainService {
MainServiceModel get() {
return new MainServiceModel {
detailsUrl = new Uri("how do I get DetailsService.ShowDetails url?");
}
}
}
class DetailService {
string ShowDetails(string id);
}
答案 0 :(得分:3)
尝试查看OperationContext
:
OperationContext oc = OperationContext.Current;
string wasCalledOn = oc.EndpointDispatcher.EndpointAddress.Uri.ToString();
操作上下文还包含有关当前操作及其参数的大量其他信息。
<击> 更新:如果要从服务A中的方法调用服务B,则应在服务A中创建客户端代理。通过这样做,您将获得一些配置条目,然后您应该能够通过Service A方法轻松调用Service B上的方法。
好的,所以不是吗....
答案 1 :(得分:0)
我的高级想法是创建自定义ServicHost(如果使用IIS,则为ServiceHostFactory)。实例化ServiceHost后,您可以访问service description和端点。您可以获取所需的信息并将其存储在某个地方以便以后重复使用。您必须使用ServiceType上的反射来获取操作相对URL。
顺便说一下。在WCF4中,如果您启用help page,则每个服务都会显示此内容。