我有Windows应用程序,通过WCF Web服务与逻辑层和数据层进行通信。 打开表单时,将建立与Web服务的连接,并且只要打开表单,连接就会保持活动状态。关闭from时,使用Web服务上的Finalize和Dispose关闭连接。 打开和关闭表单几次后,服务停止响应,我需要重置IIS中托管的服务以使其再次运行。有关如何处理此问题的任何提示?
这是我的服务合同:
[ServiceContract]
public interface ICommandInvoker : IDisposable
{
[OperationContract(IsOneWay = false)]
void Initialize(TypeInfo managerType, UserInfo userInfo, Dictionary<string,string> settingDic);
[OperationContract(IsOneWay = true)]
void Finalize();
[OperationContract(IsOneWay = false, Action="*")]
//[CustomOperationBehavior]
ServerResult Execute(ServerCommand command);
[OperationContract(IsOneWay = false, Name="Execute Serialized")]
string Execute(string command, TypeInfo typeInfo);
[OperationContract(IsOneWay = false, Name = "Execute 2 Non Serialized")]
ServerResult Execute(TypeInfo mangerType, UserInfo userInfo, ServerCommand command);
[OperationContract(IsOneWay = false, Name = "Execute 2 Serialized")]
string Execute(TypeInfo mangerType, UserInfo userInfo, string command, TypeInfo typeInfo);
[OperationContract(IsOneWay = true)]
void BeginExecute(ServerCommand command);
这是我的服务
[ServiceBehavior(InstanceContextMode = InstanceContextMode.PerSession)]
public class BudgetService : BaseCommandInvoker<BudgetDataContext>, IBudgetService
{
public BudgetService()
{
}
}
[ServiceContract(SessionMode = SessionMode.Required)]
public interface IBudgetService : ICommandInvoker
{
}
您对此使用方法Wcf有什么示例程序吗?
谢谢
答案 0 :(得分:0)
可能有很多东西!
服务器是否返回超时?你是如何管理try catch块的?是否有任何错误被抛出。我会检查通道是否出现故障,因为Exception会使通道出错。如果出现问题,您的服务应该抛出FaultExceptions。
如果没有更多信息,就无法真正帮助蚂蚁。