Vb.net 如何在每次web服务调用后关闭wcf服务
我继承了一个工作中的WCF Web服务,但有一个主要缺陷——WCF服务会消耗内存,除非服务重新启动,否则不会释放。在半天的请求命中web服务后,托管该服务的服务器上的内存攀升到接近2G,已经死在水里了 我希望能够在web服务接收到响应后释放内存,但不知道如何释放(WCF对我来说还是新的)。这是我的Vb.net 如何在每次web服务调用后关闭wcf服务,vb.net,wcf,Vb.net,Wcf,我继承了一个工作中的WCF Web服务,但有一个主要缺陷——WCF服务会消耗内存,除非服务重新启动,否则不会释放。在半天的请求命中web服务后,托管该服务的服务器上的内存攀升到接近2G,已经死在水里了 我希望能够在web服务接收到响应后释放内存,但不知道如何释放(WCF对我来说还是新的)。这是我的 具有如下服务契约的dll _ 公共接口ICheckOut _ 函数提交器(ByVal XMLForSubmitOrder作为字符串)作为字符串 端函数 我构建了一个服务引用,以将契约公开给我的web
_
公共接口ICheckOut
_
函数提交器(ByVal XMLForSubmitOrder作为字符串)作为字符串
端函数
我构建了一个服务引用,以将契约公开给我的web服务
这是我的web服务方法
Private mMyClient As MyClient
...
<WebMethod()> _
<SoapHeader("MyCredentials")> _
Public Function SubmitOrder(ByVal InputXML As String) As String
If (MyCredentails IsNot Nothing) Then
SetMyCredential()
sReturn = mMyClient.SubmitOrder(InputXML)
mMyClient.Close()
mMyClient = Nothing
Return sReturn
End If
Return "Invalid recipient credentials"
End Function
这些方法由服务管理器触发。我希望能够从我的web服务方法中调用一些东西,以便在返回后“拆除”WCF服务。我不确定这是否是最好的方法,但我不知道如何管理WCF服务的内存使用。
每次通话服务
<调用服务>是Windows通信基础默认值
实例化模式。为每次呼叫配置服务类型时
激活、服务实例、公共语言运行库(CLR)
对象,仅在客户端调用进行时存在。每个客户
请求获取一个新的专用服务实例。图2说明了
单次呼叫激活的工作原理
您是否正确地处理您维护的任何资源?可能有需要关闭的数据库连接或流吗?很难从你的代码中分辨出来,因为你没有讨论过
submitor
为MyClient
做了什么。罪犯很可能就在里面。谢谢您的回复。是-数据库连接已关闭。也将检查流。
Imports MyDll.WCFWrapper
Public Class WCFService
Private mMyServiceHost As ServiceModel.ServiceHost
Protected Overrides Sub OnStart(ByVal args() As String)
mMyServiceHost = New ServiceModel.ServiceHost(GetType(MyService))
mMyServiceHost.Open()
End Sub
Protected Overrides Sub OnStop()
If Not IsNothing(mMyServiceHost) Then
mMyServiceHost.Close()
End If
End Sub
End Class