Making Asp.net Ajax services and IIS6/CMS5/(2003) work.
In the process of migrating a site I encountered a strange problem with asp.net ajax services.
As you all probably are aware - there are two common approaches for running ajax in asp.net.
- UpdatePanel
- Webservices callable from javascript
When the latter approach is used, the methods and class have to be decorated with the ScriptService and ScriptMethod attributes.
This in turn makes it possible to access the javascript-version of the services by accessing example.asmx/js or example.asmx/jsdebug. In the CMS5 site I got 404s when trying to access those Urls for a service.
After some testing and trying I found a solution.
CMS5 sites are – at least in IIS6 – configured with a wildcard application mapping handler. Having this handler one should assume that everything is caught and handled by this. But not so for the /js and /jsdebug urls.
The solution was to add an explicit handler for asmx pointing to the isapi-dll which is used in the wildcard part.
I would like to add a screenshot for this but it didn’t work publishing images to the blog so I’ll have to explain manually and perhaps conform to WCAG :-)
this can be done from the “Home Directory”-tab in site properties. Press the Configure button and add a new mapping there with extension .asmx.
Most likely the cause of this is a bug in the wildcard application mapping system.
Comments