Служба wcf с поддержкой Ajax, использующая данные jquery POST, не отправляется через некоторое время

#c# #jquery #.net #asp.net #wcf

#c# #jquery #.net #asp.net #wcf

Вопрос:

Я использую службу wcf с поддержкой ajax с методом jquery POST, который получает данные для моих боковых меню.
Это отлично работает сразу после загрузки страницы, но если я подожду несколько минут, а затем попытаюсь получить данные, я не получу ответа. Firebug показывает, что запрос отправлен из браузера, однако я не вижу попадания в режиме отладки, сервер даже не осознает, что запрос был отправлен.
есть предложения?

РЕДАКТИРОВАТЬ вот некоторый соответствующий код
на стороне клиента:

 $.ajaxSetup({
    type: "POST",
    contentType: "application/json",
    timeout: 10000,
    cache:false,
    dataType: "json"

});

function getSubcategories(categoryId, onSuccess, onError) {
    var request = new Object();
    request.categoryId = categoryId;
    var jsonData = JSON.stringify(request);
    $.ajax({
        url: "/SiteService.svc/GetSubcategories",
        data: jsonData,
        success: onSuccess,
        error: onError
    });
  

Серверная часть:

 [ServiceContract(Namespace = "myService")]

    public interface ISiteService
    {

        [OperationContract()]
        SiteServCategory[] GetSubcategories(int categoryId);
    }
  

web.confing

  <system.serviceModel>

    <services>

      <service name="App_Code.Services.Website.Site.SiteService" behaviorConfiguration="DebugEnabled">
        <endpoint behaviorConfiguration="SiteServiceAspNetAjaxBehavior" binding="webHttpBinding" contract="App_Code.Services.Website.Site.ISiteService"/>
      </service>
    </services>
    <behaviors>
      <endpointBehaviors>
       <behavior name="SiteServiceAspNetAjaxBehavior">
          <enableWebScript/>
        </behavior>
      </endpointBehaviors>
      <serviceBehaviors>
            <behavior name="DebugEnabled">

          <serviceMetadata httpGetEnabled="true"/>
          <serviceDebug includeExceptionDetailInFaults="true"/>
        </behavior>
      </serviceBehaviors>
    </behaviors>
    <serviceHostingEnvironment aspNetCompatibilityEnabled="true" multipleSiteBindingsEnabled="true"/>
  </system.serviceModel>
  

Комментарии:

1. можете ли вы предоставить какой-нибудь соответствующий код, трудно сказать, что здесь происходит, основываясь на небольшой информации.

2. возможно, из-за дизайна вашего приложения ваш процесс загрузки может позаботиться о получении необходимых данных в синхронизации, а затем передать их в класс прокси-сервера запроса..

Ответ №1:

Я считаю, что ваш OperationContract должен быть оформлен либо с помощью WebInvoke, либо с помощью WebGet, чтобы он был представлен как JSON.

[WebInvoke(BodyStyle=WebMessageBodyStyle.Bare, ResponseFormat=WebMessageFormat.Json)]