I’m creating a WCF service that is going to live on a separate server than the website’s that are calling it. The problem I’m running into revolves around getting context information from the browser and server.
As a little background, the application I’m writing used to exist as a simple assembly on the server that was called to collect some custom web analytics, and leaned heavily on HttpContext to retrieve cookies, querystring information, and server variables.
I’ve resigned myself to passing all of these things to my service as text via an AJAX call, but I can’t help but feel like I’m doing it wrong.
Is there a better way to pass this information to my service?
UPDATE:
So, after looking at the original application, I’ve decided to take another approach. The current assembly only references five cookies, so I’m probably going to simply take those and define a data contract that includes these values and the values of the server variables that I need to use the service. I’m still going to pass in the entire query string and simply create a HttpRequest object to access those values since it is used more heavily throughout the application.
I’ll send all of this up to the service in a JSON wrapper and use a builder class to create the analytic object in the service application.
I think this is a better solution – what do you think?
Suggest using the
OperationContext.Currentproperty (MSDN link here) in your WCF service to obtain the incoming request details.References:
I was digging around online and this SO post provided a good start (I upvoted it!).
This MSDN thread explains how to extract the cookie from
OperationContext.Hope this helps. I haven’t tried this yet, so cannot guarantee it works.
p.s: If this approach works, your new
OperationContractshould have zero parameters.