Saturday, March 10, 2012

User Agent and ASP.NET Ajax Funkiness

I think it may be because AJAX uses the User Agent to workout which browser is calling the page and adjust the scripts for each browser type/version.


I appreciate your response, but that's exactly what my original post was pointing out.

So how do we get around this limitation?


You can add an entry in the <browserCaps> section of the machine.config on the server.

Copy the entry for the browser you want to mimic and change the match="regEx expression" to match the custom header.

Example:

<case match="^Test Agent">
browser=IE
version=1
majorver=1
minorver=0
frames=true
tables=true
cookies=true
backgroundsounds=true
beta=false
</case>

Hope that helps, sorry for miss understanding your post at first.


No worries. Thanks for following up.

Can this section also be inserted into the web.config for a specific site (and still have the intended effect)? Our specialty client is really only accessing one particular website on the server.


Well try as we might, we cant seem to get a working .browser file, or browserCaps sections in either machine.config or web.config. If someone could post a tested working section for a custom user agent such as 'Test Agent' for either a machine.config, web.config or .browser file, that would be so extremely helpful!


Another followup. Here is the browser file that we are attempting to get working...

1<browsers>2 <browser id="Test Agent" parentID="Mozilla">3 <identification>4 <userAgent match="^Test Agent" />5 </identification>67 <capture>8 <userAgent match="^Test Agent" />9 </capture>1011 <capabilities>12 <capability name="version" value="6.0" />13 <capability name="browser" value="IE" />14 <capability name="isColor" value="true" />15 <capability name="majorversion" value="6" />16 <capability name="minorversion" value="0" />17 <capability name="screenBitDepth" value="8" />18 <capability name="type" value="IE6" />19 <capability name="activexcontrols" value="true" />20 <capability name="backgroundsounds" value="true" />21 <capability name="cookies" value="true" />22 <capability name="css1" value="true" />23 <capability name="css2" value="true" />24 <capability name="ecmascriptversion" value="1.2" />25 <capability name="frames" value="true" />26 <capability name="javaapplets" value="true" />27 <capability name="javascript" value="true" />28 <capability name="jscriptversion" value="5.0" />29 <capability name="supportsCallback" value="true" />30 <capability name="supportsFileUpload" value="true" />31 <capability name="supportsMultilineTextBoxDisplay" value="true" />32 <capability name="supportsMaintainScrollPositionOnPostback" value="true" />33 <capability name="supportsVCard" value="true" />34 <capability name="supportsXmlHttp" value="true" />35 <capability name="tables" value="true" />36 <capability name="tagwriter" value="System.Web.UI.HtmlTextWriter" />37 <capability name="vbscript" value="true" />38 <capability name="w3cdomversion" value="1.0" />39 <capability name="xml" value="true" />40 </capabilities>41 </browser>4243 <browser refID="Mozilla">44 <capabilities>45 <capability name="xml" value="true" />46 </capabilities>47 </browser>48</browsers>

If you wish to use a browser file (This only works for .net 2 and above).

Create a text file called customApplication.browser and place this in "C:\Windows\Microsoft.NET\Framework\v2.0.50727\CONFIG\Browsers\" (If C:\Windows is the default installation path, change if installed else where).

Open in Notepad and paste the following code into it and save it. Do a iisreset (may have to reboot but should not have to). You can replace CustomApplication with the name of your app (no spaces) and replace CustomApplicationUserAgent with the user agent you are passing.

<!-- Inherts from IE, make it at like IE 6/7 --><browsers><browser id="CustomApplication" parentID="IE"><identification><userAgent match="CustomApplicationUserAgent" /><userAgent nonMatch="Opera|Go\.Web|Windows CE|EudoraWeb" /></identification><capture></capture><capabilities><capability name="activexcontrols" value="true" /><capability name="backgroundsounds" value="true" /><capability name="browser" value="IE" /><capability name="cookies" value="true" /><capability name="css1" value="true" /><capability name="css2" value="true" /><capability name="ecmascriptversion" value="1.2" /><capability name="ExchangeOmaSupported" value="true" /><capability name="extra" value="" /><capability name="frames" value="true" /><capability name="isColor" value="true" /><capability name="javaapplets" value="true" /><capability name="javascript" value="true" /><capability name="jscriptversion" value="5.6" /><capability name="letters" value="" /><capability name="majorversion" value="7" /><capability name="minorversion" value=".0" /><capability name="msdomversion" value="7.0" /><capability name="screenBitDepth" value="8" /><capability name="type" value="IE7" /><capability name="supportsCallback" value="true" /><capability name="supportsFileUpload" value="true" /><capability name="supportsMultilineTextBoxDisplay" value="true" /><capability name="supportsMaintainScrollPositionOnPostback" value="true" /><capability name="supportsVCard" value="true" /><capability name="supportsXmlHttp" value="true" /><capability name="tables" value="true" /><capability name="tagwriter" value="System.Web.UI.HtmlTextWriter" /><capability name="vbscript" value="true" /><capability name="version" value="7.0" /><capability name="w3cdomversion" value="1.0" /><capability name="xml" value="true" /></capabilities></browser></browsers>

Hi andrew,

Has your problem been resolved yet?


Yes it has. I marked the post above as the answer. Thanks for the assistance.

No comments:

Post a Comment