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

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

РЕДАКТИРОВАТЬ вот соответствующий код
clientSide:

$.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
    });

ServerSide:

[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 Ответ

1 голос
/ 28 апреля 2011

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

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

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