这应该是相当基础的,但是我说我的WCF服务上有一个Public属性作为本地变量,我在一次调用服务时设置了它。有没有办法保留该数据以进行另一次服务调用? (不将数据写入xml或db,并重新引用它或类似的东西)
执行来自Winform的调用:
Public Class ClientSideWinForm
Private proxy As ServiceReference.Client
Private Sub Client_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
proxy = New ServiceReference.Client
End Sub
Private Sub btnStartTests_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnStartTests.Click
addToTxtResults("Try Chk Program Valid...")
Try
addToTxtResults(proxy.RequestChkValidProgram("Some-serial-number")) 'returns true or false and instanciates the object server side
addToTxtResults(proxy.RequestFirstName()) ' returns nothing
Catch ex As Exception
addToTxtResults(ex.ToString)
End Try
End Sub
End Class
服务本身(有点笨拙,但行为仍然存在):
Public Class Service
Implements IService
Public Property X As String
Function RequestChkValidProgram(ByVal strSerialNumber As String) As Integer Implements IService.RequestChkValidProgram
X = "hello"
End Function
Function RequestFirstName() As String Implements IService.RequestFirstName
Return X
End Function
End Class
答案 0 :(得分:1)
如果您只有一个服务实例,那么您可以将数据从一次调用保留到下一次。您应该考虑告诉我们您为什么要这样做,因为这听起来是个坏主意。
答案 1 :(得分:1)
如果我正确理解了这个问题,那么服务调用之间的服务实现状态就会丢失。您应该考虑设置服务实现的InstanceContextMode ServiceBehavior - 听起来它当前设置为PerCall
,这样每个服务调用都会获得自己的实例。 PerSession
或Single
可能是更好的选择。
虽然我不一定同意@John Saunders认为这是个坏主意,但要了解你想要实现的目标的更多细节会很有用。 :)