我正在使用一个启用了 ajax 的 wcf 服务和一个 jquery POST 方法,该方法为我的侧边栏菜单获取数据。
它在页面加载后效果很好,但如果我等待几分钟然后尝试获取数据,我将得不到任何响应。 Firebug 显示请求是从浏览器发送的,但是在 Debug模式下我没有看到命中,服务器甚至没有意识到请求已发送。
有什么建议吗?
编辑
这是一些相关的代码
客户端:
$.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);
}
网络 session
<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>
最佳答案
我相信您的 OperationContract 需要用 WebInvoke 来装饰或 WebGet以将其公开为 JSON。
[WebInvoke(BodyStyle=WebMessageBodyStyle.Bare, ResponseFormat=WebMessageFormat.Json)]
关于c# - 使用 jquery POST 数据的启用 Ajax 的 wcf 服务在短时间内未发送,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5763225/