2010-07-15 85 views
2

我的客户可以通过反射动态调用web服务。但是如何获得有关webservice会话的cookie?我知道设置webmethodattribute enablesession是真实的,但在客户端反射生成的web服务对象没有cookiecontainer的属性,如何使它保持会话状态?如何在客户端使用web服务保持会话?

回答

1

在您的Web服务方法上使用EnableSessionAttribute,这将使他们使用(并保留)会话对象,如解释here at MSDN

+0

我知道在Web服务方法上使用EnableSessionAttribute。我的问题是如何保持会话在客户端使用反射来动态调用webservice.thanks! – user392839 2010-07-15 17:10:40

+0

例如: 使用wsdl.exe生成引用webservice对象的客户端。代码如下所示: WebService ws = new localhost.WebService(); ws.CookieContainer = cookieContainer; //保留会话 lblName.Text = ws.GetName();使用反射代码如下: object obj = activator.CreateInstance(t) System.Reflection.MethodInfo mi = t.GetMethod(methodname); 返回mi.Invoke(obj,args); //它不能保持会话与webservice.every调用将创建一个新的会话。 – user392839 2010-07-15 17:39:42

+0

@jollyray:在评论中粘贴的代码几乎不可读(即使你使用强制性的代码块在这里反引号),你可以将它添加到你的问题的可读性吗?最好是当前代码的一个(部分)工作示例。 – Abel 2010-07-15 18:05:33