0

I recently migrated multiple websites in our development area from an x86 Windows 2003 (IIS6) to x64 Windows 2008 R2 (IIS7). I used "msdeploy" to do the migration. Originally I migrated the entire server but had issues with that so I ended up just migrating the IIS configurations minus the Script Maps. After a few configuration changes I was finally able to get the .NET 3.5 site serving pages in Integrated mode. However, I am having an issue with this section of the main master page:

<asp:ScriptManager ID="ScriptManager1" runat="server" EnablePageMethods="true">
<Services>
  <asp:ServiceReference Path="~/AjaxServices/FormSubmissionService.asmx" />
  <asp:ServiceReference Path="~/AjaxServices/GMapDataService.asmx" />
  <asp:ServiceReference Path="~/AjaxServices/ImageGalleryService.asmx" />
  <asp:ServiceReference Path="~/AjaxServices/MyFavoritesService.asmx" />
</Services>

each of these generates a script tag like:

<script src="../AjaxServices/FormSubmissionService.asmx/jsdebug" type="text/javascript"></script>
<script src="../AjaxServices/GMapDataService.asmx/jsdebug" type="text/javascript"></script>
<script src="../AjaxServices/ImageGalleryService.asmx/jsdebug" type="text/javascript"></script>
<script src="../AjaxServices/MyFavoritesService.asmx/jsdebug" type="text/javascript"></script>

The web services are being reached but i'm getting the following error when trying to access the "jsdebug":

System.InvalidOperationException: jsdebug Web Service method name is not valid.
   at System.Web.Services.Protocols.HttpServerProtocol.Initialize()
   at System.Web.Services.Protocols.ServerProtocol.SetContext(Type type, HttpContext context, HttpRequest request, HttpResponse response)
   at System.Web.Services.Protocols.ServerProtocolFactory.Create(Type type, HttpContext context, HttpRequest request, HttpResponse response, Boolean& abortProcessing)
  • the site's app pool is v2.0.050727 Integrated.
  • "Enable 32-Bit Applicaitons = false" (flipping this didn't help).
  • The site was build for "Any CPU".
  • I have the same site running under II7 on my local Win7 box and everything runs fine. The only difference I see is that the app pool is running in "classic" mode. I tried switching the server to "classic" mode with the same results.
  • I tried setting debug="false" but i get the same error (except /js instead of /jsdebug)
  • I've run aspnet_regiis -i several times. the x64 versions of 2.0 and 4.0
  • I've reinstalled IIS and .NET 3.5.1 through the Role Manager several times
  • I'm able to get to each of the web service definition pages

I would like to reinstall/repair .net 2.0 but this does not seem possible in WinServer 2008. I read elsewhere that reinstalling the OS is the only way to accomplish this. That is NOT an option.

Am I missing a config somewhere?? Any help would be greatly appreciated!

BFK
  • 69
  • 2
  • 7
  • Same question? http://stackoverflow.com/questions/5382239/request-for-wstestservice-asmx-jsdebug-returns-500-error-on-server-fine-in-deve – D. Lambert May 14 '13 at 18:22
  • It is the same error but unfortunately the answer did not resolve my issue. – BFK May 14 '13 at 21:14

1 Answers1

2

figured it out. I added this handler to the top of the list under system.webServer/handlers in the web.config. the scripts now load ok

<add name="ScriptHandlerFactory" path="*.asmx" verb="*" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" modules="ManagedPipelineHandler" scriptProcessor="" resourceType="Unspecified" requireAccess="Script" allowPathInfo="false" preCondition="integratedMode" responseBufferLimit="4194304"/>

i actually had this handler in the list but it was referencing 4.0 and it appeared after the 2.0 handler for "*.asmx"

BFK
  • 69
  • 2
  • 7