ASMX с jquery работает локально, но не при развертывании в IIS 6.0

#jquery #asmx

#jquery #asmx

Вопрос:

У меня есть простой вызов jquery, который пытается вернуть некоторый XML из службы ASMX. Этот вызов работает локально, но после развертывания службы и страницы с вызовом .ajax() я просто «вращаюсь» при вызове веб-службы.

Я убедился, что учетная запись пользователя ASPNET имеет соответствующие права для доступа к папке, в которой находится ASMX. Кроме того, я добавил следующие строки в web.config перед развертыванием на сервере:

 <webServices>
    <protocols>
        <add name="HttpGet"/>
        <add name="HttpPost"/>
    </protocols>
</webServices>
  

Когда я вызываю это в firebug для проверки вызова, я вижу заголовки, но сообщение и ответ ничего не значат, они просто «вращаются». Я никогда не получаю ошибку в ответ, я только получаю непрерывное вращение.

HTML-страница и веб-служба находятся в одном домене (даже в одной папке).

Спасибо.

ОБНОВЛЕНИЕ: теперь я прочитал статью Encosia о добавлении [webmethod] к статическим методам на страницах .aspx (т.Е. default.aspx) (ссылка). Теперь я могу вызывать эти методы локально без проблем, но при развертывании в IIS 6.0 я не получаю ответа. Это исключило вызов .asmx из уравнения, и у меня осталось что-то более фундаментальное. Какой раздел конфигурации мне не хватает, чтобы разрешить любую операцию $.ajax() для локальной страницы?

Ответ №1:

ваша версия может отличаться:

 <system.web>
    <httpHandlers>
        <remove verb="*" path="*.asmx"/>
        <add verb="*" path="*.asmx" validate="false" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
    </httpHandlers>
</system.web>
  

Вы также можете сравнить файлы на локальном и развернутом сервере, поскольку необходимы другие части web.config.

РЕДАКТИРОВАТЬ: просто проверяю, но вы завершили свое добавление и разрешили JSON (предположение, что вы используете это):

 <system.web.extensions>
    <scripting>
        <scriptResourceHandler enableCaching="true" enableCompression="true" />
        <webServices>
            <jsonSerialization maxJsonLength="5000000"/>
        </webServices>
    </scripting>
</system.web.extensions>

<system.web>
    <webServices>
        <protocols>
            <add name="HttpGet"/>
            <add name="HttpPost"/>
        </protocols>
    </webServices>
</system.web>