悉野小楼

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

统计

WebSerivice例子 vs2008 客户端和服务端

建立服务端:

在VS.net2008中 新建项目->选择asp.net服务应用程序

 

直接按F5运行, 点HelloWorld, 点调用, 可以看到XML返回结果就说明WebService能用了.

 

在vs解决方案资源管理器中, 右击Service.asmx , 选择查看代码 打开Service.asmx, 在HelloWord下自己写几个测试函数:(标记了WebMethod]的可以被远程调用,

(descrition是函数说明) 

   

复制代码
    public string HelloWorld() {
        return "Hello World";
    }

    [WebMethod(Description="整数加法运算")]
    public int Add(int a, int b)
    {
        return a + b;
    }

    [WebMethod(Description = "返回DataSet")]
    public DataSet GetDataSet()
    {
        DataTable dt = new DataTable();
        dt.Columns.Add("name");
        dt.Columns.Add("age");
        dt.Columns.Add("sex");
        DataRow dr = dt.NewRow();
        dr["name"] = "jack";
        dr["age"] = "25";
        dr["sex"] = "";
        dt.Rows.Add(dr);
        dr = dt.NewRow();
        dr["name"] = "cherry";
        dr["age"] = "26";
        dr["sex"] = "";
        dt.Rows.Add(dr);
        DataSet ds = new DataSet();
        ds.Tables.Add(dt);
        return ds;
    }
按F5运行, 网页地址假设为http://localhost:2582/WebSite1/Service.asmx (下面客户端要调用). 可以看到三个函数, 服务端完成了.
复制代码

 

 客户端:

可以是Console, Web, Winform.这儿以Console平台为例:

新建一个Console项目.

在解决方案引上右击选择"添加服务引用..."

 

 

然后把上面的webService服务地址复制过来, 点下前往就能看到函数了.

修改下命名空间, 每个WebService要个独立的命名空间, 以防止与当前项目类名相同.

 

修改main函数:

  static void Main(string[] args)

复制代码
        {
            MyService.ServiceSoapClient client = new MyService.ServiceSoapClient();
            int result = client.Add(12);
            MyService.ServiceSoapClient client1 = new MyService.ServiceSoapClient();
            int result1 = client.Add(12);
            MyService.ServiceSoapClient client2 = new MyService.ServiceSoapClient();
            int result2 = client2.Add(22);
            Console.WriteLine(result + "\n" + result1 + "\n" + result2);
            //DataTable DataRow DataView DataColumn都不能在webservices中传过来 只能用dataset了
            DataTable dt = client.GetDataSet().Tables[0];
            foreach (DataRow dr in dt.Rows)
            {
                string str = "";
                foreach (DataColumn dc in dt.Columns)
                {
                    str += dr[dc].ToString() + "\t";
                }
                Console.WriteLine(str);
            }
            Console.ReadKey();
        }
运行可以看到调用了. 客户端要新建项目, 服务端那个项目运行不要关闭.
复制代码

如果WebService想发布, 选择发布网站, 把生成的dll, 拷贝到IIS运行程序目录中. 客户端修改app.config文件, 改成实际地址.

posted on   悉野  阅读(674)  评论(0编辑  收藏  举报

编辑推荐:
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
历史上的今天:
2010-11-18 t-sql中with用法
2010-11-18 sql排名次 rank()用法
点击右上角即可分享
微信分享提示