... или «Как определить, какой метод WCF будет вызываться на основе URI?»
Предположим, что в службе WCF вызывается метод, и у меня есть URI, который использовался для его вызова. Как я могу получить информацию о конечной точке WCF, методе, параметрах и т. Д., На который отображается URI?
[OperationContract]
[WebGet(UriTemplate = "/People/{id}")]
public Person GetPersonByID(int id)
{
//...
}
Например, если URI: GET <a href="http://localhost/Contacts.svc/People/1" rel="nofollow">http://localhost/Contacts.svc/People/1</a>
, я хочу получить эту информацию: имя службы (Service), метод (GetPersonByID), Parameters (PersonID = 1). Суть в том, чтобы иметь возможность прослушивать запрос и затем извлекать детали запроса для отслеживания вызова API.
Сервис размещен через http. Эта информация требуется до того, как включится кэширование .Net, чтобы можно было отслеживать каждый вызов (независимо от того, кэшируется он или нет). Это, вероятно, означает делать это внутри HttpApplication.BeginRequest
.
К вашему сведению, я надеюсь не использовать отражение. Я хотел бы использовать те же методы, которые использует WCF, чтобы определить это. Например. MagicEndPointFinder.Resolve(uri)