#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>