获取WCF休息服务的URL

时间:2011-02-28 11:23:22

标签: wcf

是否可以找到服务和方法的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);
}

2 个答案:

答案 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,则每个服务都会显示此内容。