我创建了一个简单的web方法,用于使会话保持活动状态:
Imports System.ServiceModel
Imports System.ServiceModel.Activation
Imports System.ServiceModel.Web
<ServiceContract(Namespace:="PMWebService")>
<AspNetCompatibilityRequirements(RequirementsMode:=AspNetCompatibilityRequirementsMode.Allowed)>
Public Class WebService
' To use HTTP GET, add <WebGet()> attribute. (Default ResponseFormat is WebMessageFormat.Json)
' To create an operation that returns XML,
' add <WebGet(ResponseFormat:=WebMessageFormat.Xml)>,
' and include the following line in the operation body:
' WebOperationContext.Current.OutgoingResponse.ContentType = "text/xml"
<OperationContract()>
Public Shared Function KeepSessionAlive() As Integer
'Keep the session alive by writing to a session variable
HttpContext.Current.Session("KeepSessionAlive") = DateTime.Now
'Give the user time to keep the session alive
Dim iSecondsToKeepAlive As Integer = 50
'Set the timeout before the 'keep alive' message is displayed
Dim iTimeout As Integer = (HttpContext.Current.Session.Timeout * 60000) - (iSecondsToKeepAlive * 1000)
Return iTimeout
End Function
' Add more operations here and mark them with <OperationContract()>
End Class
我的scriptmanager定义如下:
<asp:ScriptManager ID="ScriptManagerMaster" EnablePartialRendering="true" runat="server">
<Services>
<asp:ServiceReference Path="~/Shared/WebService.svc" />
</Services>
</asp:ScriptManager>
我希望能够从我的所有网页访问此内容。我尝试创建一个wcf服务来通过以下方式调用它:
$('.renew-session').click(function () {
clearTimeout(modalTimeout);
var stayAlive = new PMWebService.WebService
stayAlive.KeepSessionAlive(onTimeoutReturned, onDataFailure);
});
然而,在“var stayAlive = new MyWebService.WebService”中失败,说PMWebService未定义。
我试图按照http://www.dotnetcurry.com/ShowArticle.aspx?ID=235上的示例进行操作。然而,当我完成这些步骤时,我在步骤4中得到了不同。当我查看脚本管理器的属性时,我没有看到服务集合。我的网站是作为网络应用程序运行的,所以我不知道这是否会产生任何影响。
我希望有人可以帮忙解决这个问题。我也尝试将其作为asmx服务运行但是也出现了同样的错误。我可以将它作为PageMethod运行,但我必须将它放在每个页面上。我也尝试了一个ashx处理程序,但不认为我可以从中返回超时值。
答案 0 :(得分:0)
我刚刚对此进行了整理。我不得不从'KeepSessionAlive'的定义中删除'Shared'。我从其他地方复制了例程,并没有注意到定义是不正确的。