DNN: вызов веб-сервиса из jQuery

#jquery #asmx #dotnetnuke

#jquery #asmx #dotnetnuke

Вопрос:

Я пытаюсь переместить часть моего старого кода в модуль DNN. Код вызывает веб-сервис (asmx) через jQuery и отображает результат. Я разместил файл ASMX здесь: DesktopModules.Мой модуль.Служба и код, стоящий за ней, помещаются в папку App_Code MyModule.

Я могу вызвать службу напрямую через http://localhost/DNN/DesktopModules/myModule/Service/myService.asmx — пока никаких проблем 🙂

Но вызов службы из модуля с помощью этого скрипта

 GetStats = function () {

$.ajax(
 {
     type: "POST",
     url: "http://localhost/DNN/DesktopModules/myModule/Service/myService.asmx",
     data: '{}',
     contentType: "application/json; charset=utf-8",
     dataType: "json",
     failure: function (msg) {
          Failure while call : "   msg);
     },
     error: function (xhr, err) {
          Error while call : "   err);
     },
     success: function (response) {}});
  };
  

Заканчивается с кодом ошибки 400, кажется, что URL переписан ?!

Я ввожу «http://localhost/DNN/DesktopModules/myModule/Service/myService.asmx » и код переходит по этому URL «/dnn/Default.aspx?tabid=82/MyService.asmx»

Удобные URL-адреса отключены, и перезаписыватель отсутствует…

Я просто не могу найти способ — любая помощь приветствуется 🙂

Питер

Ответ №1:

вам нужна новая запись в siteurl.config, вот она для вас.

 <RewriterRule>
    <LookFor>.*myService.asmx(.*)
    <SendTo>~/DesktopModules/myModule/Service/myService.asmx$1
</RewriterRule>
  

Это решит вашу проблему.

Еще одна хорошая вещь в этом заключается в том, что если вы сделаете localhost/ MyService.asmx, он все равно будет работать из-за этого правила