C# 创建、部署、调用 webservice 的简单列子

webservice 可以用于分布式应用程序之间的交互,和不同程序之间的交互。

首先创建一个空的 web 应用程序

然后鼠标右键点击项目,选择 add > new item

选择 web 服务,点击 add, 一个简单的 webservice 就创建完成了,接下来编写两个简单的方法

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Services;

namespace WebServiceDemo
{
    /// <summary>
    /// Summary description for WebServiceDemo
    /// </summary>
    [WebService(Namespace = "http://tempuri.org/")]
    [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
    [System.ComponentModel.ToolboxItem(false)]
    // To allow this Web Service to be called from script, using ASP.NET AJAX, uncomment the following line. 
    // [System.Web.Script.Services.ScriptService]
    public class WebServiceDemo : System.Web.Services.WebService
    {

        [WebMethod]
        public string HelloWorld()
        {
            return "Hello World";
        }
        [WebMethod(Description = "Add method")]
        public int Add(string a, string b)
        {
            int sum = 0;
            sum = Convert.ToInt32(a) + Convert.ToInt32(b);
            return sum;
        }
        [WebMethod(Description = "Sum method")]
        public int Sum(string a, string b)
        {
            int sum = 0;
            sum = Convert.ToInt32(a) * Convert.ToInt32(b);
            return sum;
        }
    }
}
View Code

PS : 如果方法需要通过 webservice 的地址进行调用,那就必须在方法上面打上 【WebMethod】的特性标签,否则是无法通过 webservice 访问到的。 Description 是方法的描述

然后在点击运行,就可以看到上图的方法,访问 webservice 就可以根据地址栏里的地址进行调用 webservice 的方法

但是这样如何让其他的应用程序通过网络进行访问,那就需要部署到服务器

下面演示部署在本机上,如果没有开启 IIS 的话,可以通过 开始菜单 > 控制面板 > 程序 > 启用或关闭 windows 功能 开启。 

开启 IIS 之后,先把刚才的 webservice 发布之后,然后打开 IIS 管理器

选择 Custom ,然后输入配置文件名称,然后下一步

 然后选择发布方式为文件系统(File System),然后下一步

设置不用改,继续下一步,然后点击发布

上图这样就发布完成了,现在开打 IIS 管理器,然后选择发布网站,点击添加网站。

输入网站的名称、IP地址(本机可以不输入IP地址)和端口,选择文件的路径,然后点击确定,网站就创建完成了

赢并不一定能使用,会遇到很多问题,下面看看我们的解决方法

这个错误是应为文件的访问权限不够的问题。解决方法就是点击编辑权限

然后选择安全栏目,点击编辑

 然后点击添加一个用户,把权限设置为允许。

或者用下面的方法:选择网站,然后选中身份验证,点击基本设置。

选择链接为

 

然后选择特定用户,点击设置,输入本机的用户名和密码,点击确认就可以。然后可以点击测试设置看看效果

 

这个错误的原因是在安装 Framework v4.0之后,再启用 IIS ,导致 Farmework 没有完全安装。

解决方法就是: 开始菜单 > 命令提示符(管理员),然后输入并执行 %windir%\Microsoft.NET\Framework\v4.0.30319\aspnet_regiis.exe -i 命令行。

这个问题是因为应用程序池设置的原因,开始新建网站的时候没有选择应用程序池,默认为v2.0的版本,不支持 Framework 4.5

解决方法就是选择应用程序吃,然后改为v4.0的版本,管理模式设置为集成

这个错误原因是由于系统目录下的Temp目录无相关的权限所致。

解决方法就是进入 C盘 Windows 目录下的 Temp 目录,右键属性 > 安全栏 > 编辑 > IIS_IUSRS 的权限设置为控制。

 

这个错误原因是因为没有设置网站的默认文档。

解决方法就是选择网站,点击默认文档,然后添加一个默认的页面,即应用程序的起始页面

 

然后让其他人登入我们的网址试试解决不能登入。

解决方法是在防火墙设置网址的端口 开始菜单 > 控制面板 > 系统和安全 > Windows防火墙 > 高级设置 

选择 port

输入网站的端口号

这样就完成了。

接下来就是简单的 webservice 调用实例

先添加一个控制台应用程序,然后右键引用,选择添加服务引用。

点击高级,然后在弹出的页面点击 添加 web 引用

 1.输入部署的网站网址 2.点击转到 3.添加引用

引用添加完成后,开始调用 webservice 

using System;
namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            WebReference.WebServiceDemo webservice = new WebReference.WebServiceDemo();
            string a = "2";
            string b = "3";
            Console.WriteLine(webservice.HelloWorld());
            Console.WriteLine(webservice.Add(a, b));
            Console.WriteLine(webservice.Sum(a, b));
        }
    }
}
View Code

结果如下

 

posted @ 2017-09-21 18:11  Yanzhiyi  阅读(419)  评论(0)    收藏  举报