当前位置:  编程技术>.net/c#/asp.net

c# WebService实例分享

    来源: 互联网  发布时间:2014-08-30

    本文导语:  本节内容: c# WebService编程实例与经验分享   Webservice常用来向客户端提供的访问数据的接口,在客户端添加对webservice的引用以后,在客户端就会生成Webservice在本地的代理,然后客户端就可以像使用本地的类一样使用Webservice...

本节内容:
c# WebService编程实例与经验分享

  Webservice常用来向客户端提供的访问数据的接口,在客户端添加对webservice的引用以后,在客户端就会生成Webservice在本地的代理,然后客户端就可以像使用本地的类一样使用Webservice的代理类了。

当然生成的本地代理和原生的Webservice提供的访问方法还是有点区别的,如WebService中使用的List类型的方法参数,在客户端代理中需要使用string[]数组来做为参数值,传递给Webservice的代理方法,这些以后有空会单独再来讨论一下Webservice的参数类型问题。今天要分享的小经验有两个。

  首先,当需要动态的设置我们引用的webservice的URL时,该如何去做。
例如,想将Webservice的Url配置在config配置文件中,或在用户界面上让用户自己去输入这个Webservice的url时,我们该如何去做。

其实,Webservice提供了Url这个属性,可以在调用该Service时,直接给该Url属性赋值即可。

需要做的就是在添加的Webservice引用上,点击右键-属性-然后将Webservice的URL Behavior属性设置为Dynamic即可。
然后,在客户端可以这样写: 
 

代码示例:
LocalWebServiceProxy.StudentService service=new LocalWebServiceProxy.StudentService();
service.Url=”http://211.13.23.56/StudentService.asmx”;
string userName=service.GetUserName();
 

Webservice是支持Session的,只要在WebMethod这个Attribute上添加一个参数EnableSession=true即可。如下:
 

代码示例:

public class StudentService : System.Web.Services.WebService
    {
        [WebMethod(Description="登录",EnableSession=true)]
        public void Login(string userName,string pwd)
        {
   Context.Session["USER"]=userName;
        }

        [WebMethod(Description="获取用户名",EnableSession=true)]
        public string GetUserName()
        {
   if(Context.Session["USER"]!=null)
   {
       return Context.Session["USER"].ToString();
   }
   else
       return string.Empty;
        }
}

即使这样,当在客户端调用Login方法后,客户端再次调用GetUserName方法时,发现Context.Session[“User”]仍然为空。
可以通过如下方法进行解决,需要在客户端调用Webservice的代理类时,给予这个代理类实例赋上CookieContainer属性。如下:
 

代码示例:
public class StudentServiceInstance
    {
        static LocalWebService.StudentService service;
        public static LocalWebService.StudentService Service()
        {
   if (service == null)
   {
       service = new LocalWebService.StudentService();
       //这里可以动态的设置WebService的Url
       //service.Url = "http://192.168.84.47/SchoolWebService";
       service.CookieContainer = new System.Net.CookieContainer();
       service.Credentials = System.Net.CredentialCache.DefaultCredentials;
       return service;
   }
   else
       return service;
        }
}
 

以上方法就是在客户端自定义一个用来实例化这个Webservice代理类实例的方法,该实例对象必须是静态对象,这样就保证了客户端在任何地方使用该自定义类来取得Webservice代理类对象时,都是同一个代理类对象。同时必须给实例化后的代理类对象设置CookieContainer属性和Credentials属性。

然后,在调用Webservice的地方可以如下:
 

代码示例:

protected void BtnGetUserName_Click(object sender, EventArgs e)
 {
   string userName = StudentServiceInstance.Service().GetUserName();

   //如下调用时,Session不能共享
   //LocalWebService.StudentService service = new SessionWebService.LocalWebService.StudentService();
   //string userName = service.GetUserName();

   ClientScriptManager cs = this.ClientScript;
   cs.RegisterClientScriptBlock(this.GetType(), "info", "javascript:alert('"+userName+"')",true);
        }
        protected void BtnLogin_Click(object sender, EventArgs e)
        {
   StudentServiceInstance.Service().Login("school", "111111");

   //如下调用时,Session不能共享
   //LocalWebService.StudentService service = new SessionWebService.LocalWebService.StudentService();
   //service.Login("school","111111");
}


    
 
 
 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • java命名空间javax.jws注释类型webservice的类成员方法: targetnamespace定义及介绍
  • c 实现 Webservice
  • java命名空间javax.jws注释类型webservice的类成员方法: name定义及介绍
  • asp.net webservice返回json的方法
  • java命名空间javax.jws注释类型webservice的类成员方法: servicename定义及介绍
  • Unix环境下,c++如何调用java写的webservice?
  • java命名空间javax.jws注释类型webservice的类成员方法: portname定义及介绍
  • 使用jdk1.4+wstk3.2+tomcat+axis进行开发webservice
  • java命名空间javax.jws注释类型webservice的类成员方法: wsdllocation定义及介绍
  • jquery iis7站长之家
  • java命名空间javax.jws注释类型webservice的类成员方法: endpointinterface定义及介绍
  • WebService Vs EJB!!!
  • php的webservice的wsdl的XML无法显示问题的解决方法
  • Google提供的WebService的API怎么不能进行中文的查询搜索啊?
  • linux平台下的webservice
  • UNIX下如何调用webservice
  • 在Android中访问WebService接口的方法
  • WebService框架 XFire
  • jbuilder用的webservice开发包谁能给我一份呀
  • JSON Webservice
  • 实体bean可不可以在webservice中发布?


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3