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; } } }
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)); } } }
结果如下