JQuery для asmx не работает в Windows 2008 R2 SP1 - PullRequest
4 голосов
/ 28 марта 2011

С момента установки SP1 мы сталкиваемся с проблемами при вызове страниц asmx из клиентского кода JQuery.

IIS направляет пост-вызов JQuery на его страницу 404 по умолчанию.

Мы сделали откат нашей среды, чтобы подтвердить, что эта проблема вызвана SP1, и тесты подтвердили ее.* Ожидание исправления @ MS

Используемые технологии:

ASP.Net 4.0 - JQuery - IIS 7.5 - Windows 2008 R2 SP1

-Барт

Пример вызова кода (интерфейс):

  // Code to load vars...
  $.ajax({

              type: "POST",
              url: "/Handlers/ProductRating.asmx/RateProduct",
              data: "{'uniqueId':'" + uniqueId + "','productId':'" + productId + "','points':" + points.toString() + ",'showOwnScore':" + showOwnScore.toString() + "}",
              contentType: "application/json; charset=utf-8",
              dataType: "json",
              success: function(response) {
                   alert('success');
              },
              failure: function(msg) {
                alert('something went wrong');
              }
            });
        }

Код базы:

 [ScriptService]
public class ProductRating : System.Web.Services.WebService
{

    [WebMethod(EnableSession=true)]
    public RateProductResponse RateProduct(Guid uniqueId, Guid productId, int points, bool showOwnScore)
    {
       //Implementation
    }

Снимок1: С SP1: http://img812.imageshack.us/i/capture2r.png/

Снимок2: Без SP1: http://img190.imageshack.us/i/capture1qx.png/

Ответы [ 3 ]

4 голосов
/ 06 мая 2011

Я смог заставить это работать с помощью следующего дополнения к моему web.config

Я видел другой сайт, который предлагал очистить обработчики, но от этого все стало еще хуже.Благодаря этому обновлению мне удалось снова вызвать мои веб-службы.

<system.webServer>
    <handlers>
        <add name="AsmxRoutingHandler" verb="*" path="*.asmx"  type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
    </handlers>
</system.webServer>
0 голосов
/ 19 апреля 2011

Судя по вашим скриншотам, это очень похоже на проблему переписывания URL.Есть ли на вашем сайте какие-либо чрезмерно жадные правила перезаписи URL-адресов на уровне IIS, которые могут быть перенаправлены на 302 /Handlers/ProductRating.asmx/RateProduct?

Если у вас есть правила перезаписи, вы можете временно отключить их, чтобы проверить, исправляет ли это ASMXвопрос

0 голосов
/ 19 апреля 2011

У меня была такая же проблема.

Создайте файл Web.Config, содержащий следующие строки:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
    <location path="." inheritInChildApplications="false">
        <system.web>
            <httpHandlers>
                <clear />
                <add verb="*" path="*.asmx" validate="false" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
                <add path="*" verb="GET,HEAD,POST" type="System.Web.DefaultHttpHandler" validate="True" />
            </httpHandlers>
        </system.web>
    </location>
</configuration>

Скопируйте его в каталог (и), где вы раздаете уязвимые сценарии, и перезапустите веб-сервер.

Эти строки переопределят ваши предпочтительные HttpHandlers и установят для него использование обработчиков по умолчанию.

Удачи!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...