【发布时间】:2011-06-15 15:40:00
【问题描述】:
...或者“如何根据URI确定调用哪个WCF方法?”
在 WCF 服务中,假设调用了一个方法,并且我有用于调用它的 URI。如何获取有关 URI 映射到的 WCF 端点、方法、参数等的信息?
[OperationContract]
[WebGet(UriTemplate = "/People/{id}")]
public Person GetPersonByID(int id)
{
//...
}
比如,如果URI是:GET @987654321@,我想得到这个信息:服务名(Service),方法(GetPersonByID),参数(PersonID=1)。重点是能够监听请求,然后提取请求的详细信息以跟踪 API 调用。
该服务通过 http 托管。在启动 .Net 缓存之前需要此信息,以便可以跟踪每个调用(无论是否缓存)。这可能意味着在 HttpApplication.BeginRequest 内部执行此操作。
仅供参考,我希望不使用反射。我想使用 WCF 用来确定这一点的相同方法。例如。 MagicEndPointFinder.Resolve(uri)
【问题讨论】:
-
您在哪里需要这些信息?是否在方法(GetPersonByID)本身上,当服务被打开时,当消息到达时(即,在某些消息检查器中)?
-
它在 Application 类中更靠前,可能在 BeginRequest 中。
-
HttpApplication,即服务是通过网络应用程序托管的。
标签: wcf web-services .net-4.0