开发者

How to detect user agent in WCF web service

How can I detect the user agent in a web service? My web service is implemented using a WCF webservice with basicHTTPBinding. It will be a post from some SOAP clients. I wish to know the user-agent from the clients.

I shall like to see some sample code for this.

I am using a WCF based web service and in the svc.cs, I tried to catch this.Context.Request.UserAgent. But it gives the following error:

this.Context.Request.UserAgent 'MySoapService.MyService' does not contain a definition for 'Context' and no extension method 'Context' accepting a first argument of type 'MySoapService.MyService' could be found (are you missing a using directive or an assembly reference?)

I also tried System.Web.HttpContext.Current.Request.UserAgent and it says:

'System.Web.HttpContext.Current' is null

Edit note:

I tried to activate the ASP.NET compatibility mode. I added <serviceHostingEnvironment aspNetCompatibilityEnabled="true开发者_C百科" /> in the config file and added [AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Required)] on the top of the class that implements the service interface. Then using System.Web.HttpContext.Current.Request.UserAgent gives me the user agent as desired.


There is another way to get the user agent without enabling ASP.NET compatibility in web.config:

string userAgent = WebOperationContext.Current.IncomingRequest.Headers["User-Agent"];


You can use also:

WebOperationContext.Current.IncomingRequest.UserAgent


You can read user agent from the HttpContext.Current.Request object if you enable ASP.NET compatibility in web.config:


What a totally unhelpful response!

This is not a trivial task. Yes it is obviously possible to get te user-agent string but how does one actually do it? I spent 2 hours checking google and so on but found the answer buried in MSDN documentation. In Visual Studio, from within a WebMethod try

this.Context.Request.UserAgent

That should do it!


User-Agent is a standard HTTP header. It'll be available to your web service just like it's available to anything CGI-like.

Did you even bother searching for this before posting your question? There must be millions of hits for it on Google.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜