¿Por qué el script Ajax no se está ejecutando en el servidor IIS 7.5 Win 2008 R2?

Tengo una aplicación web que funciona bien en VS 2013 en mi servidor de desarrollo, pero una vez que la publiqué en el servidor IIS 7.5 2008 R2, los scripts Ajax, ubicados en mi archivo de script personalizado, ya no funcionan, aunque los otros scripts de JQuery que no llaman a Ajax funcionan correctamente ¿Hay algo más que deba hacerse para que ajax funcione en el servidor? He leído algunas publicaciones, pero todavía no he podido encontrar una respuesta. Tengo una experiencia limitada en IIS y Ajax.

// Actualización:

Ya he descubierto que el script de Ajax funciona y que el problema probablemente se encuentre en la siguiente línea:

“url: ‘/ Home / GetRates’, // URL para la solicitud”

Usando el debuger descubrí que la función GetRates () no se ha llamado en el servidor remoto, aunque está en el servidor de desarrollo local (en VS 2013). La única diferencia que veo es el camino, pero no sé cómo solucionarlo. A continuación está el script de Ajax:

// Retrieve rates and update partial view $(function () { $('#reservSearch').submit(function () { if ($(this).valid()) { $("#theModal").modal("show"); // Display the in progress..... $.ajax({ url: '/Home/GetRates', // URL for the request data: $("#reservSearch").serialize(), // the data to send (will be converted to a query string) type: "POST", // whether this is a POST or GET request dataType: 'html', // the type of data we expect back success: function (data) { // code to run if the request succeeds; The response is passed to the function $("#theModal").modal("hide"); // Close the in progress modal..... $('#ratesView').html(data); // Fill div with results }, error: function (xhr, status) { // code to run if the request fails; the raw request and status codes are passed to the function $("#theModal").modal("hide"); // Close the in progress modal..... alert('Error: Retrieving parking rates' + "
" + xhr.error); } }); } // // it is important to return false in order to cancel the default submission of the form and perform the AJAX call return false; }); });

// SEGUNDA ACTUALIZACIÓN

Después de seguir las instrucciones en la sección de comentarios, esta es la respuesta de la llamada ajax:

   

Internet Information Services 7.5

Error Summary

HTTP Error 404.0 - Not Found

The resource you are looking for has been removed, had its name changed, or is temporarily unavailable.

Detailed Error Information
ModuleIIS Web Core
NotificationMapRequestHandler
HandlerStaticFile
Error Code0x80070002
Requested URLhttp://localhost:80/Home/GetRates
Physical PathC:\inetpub\wwwroot\Home\GetRates
Logon MethodAnonymous
Logon UserAnonymous
Most likely causes:
  • The directory or file specified does not exist on the Web server.
  • The URL contains a typographical error.
  • A custom filter or module, such as URLScan, restricts access to the file.
Things you can try:
  • Create the content on the Web server.
  • Review the browser URL.
  • Create a tracing rule to track failed requests for this HTTP status code and see which module is calling SetStatus. For more information about creating a tracing rule for failed requests, click here.
Links and More Information This error means that the file or directory does not exist on the server. Create the file or directory and try the request again.

View more information »

Cómo depurar llamadas AJAX

La respuesta completa se extiende a través de los comentarios sobre la pregunta de OP, pero creo que esta fue la que más me ayudó:

  1. Vaya a la página web que hace la llamada AJAX
  2. En Chrome, presiona F12
  3. Ve a la pestaña Red
  4. Active la llamada AJAX enviando el formulario #reservSearch
  5. En la pestaña Red, busque una llamada a / Inicio / GetRates
  6. Pinchalo
  7. Compruebe las tabs Vista previa y Respuesta para ver el resultado de su servidor
  8. ¿Está mostrando los datos HTML esperados que está escuchando su llamada AJAX?