在VS中创建WebService并发布至IIS

创建WebService

打开VS,新建空项目,注意选择.NET Framework的版本.这里我选择的是.NET Framework 4

新建好项目后,在项目中添加一个WebService项

打开这个文件,我们可以看到,代码如下

using System;  
using System.Collections.Generic;  
using System.Linq;  
using System.Web;  
using System.Web.Services;  
  
namespace CalculateService  
{  
    /// <summary>  
    /// WebService1 的摘要说明  
    /// </summary>  
      
  
    [WebService(Namespace = "http://tempuri.org/")]  
    [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]  
    [System.ComponentModel.ToolboxItem(false)]  
    // 若要允许使用 ASP.NET AJAX 从脚本中调用此 Web 服务,请取消注释以下行。   
    // [System.Web.Script.Services.ScriptService]  
    public class CalCulService : System.Web.Services.WebService  
    {  
  
        [WebMethod]  
        public string HelloWorld()  
        {  
            return "Hello World";  
        }  
    }  
} 
View Code

将HellowWorld这段代码删除,修改后如下

public class CalCulService : System.Web.Services.WebService  
    {        
        [WebMethod]  
        public int Sum(int a, int b)  
        {  
            return a + b;  
        }  
  
        [WebMethod]  
        public int Sub(int a, int b)  
        {  
            return a - b;  
        }  
  
        [WebMethod]  
        public double Mult(double a, double b)  
        {  
            return a * b;  
        }  
  
        [WebMethod]  
        public double Div(double a, double b)  
        {  
            return a / b;  
        }  
    }  
View Code

此时,我们已经完成这个WebService的代码部分,生成项目,运行WebService1.asmx,即可看到服务方法。

 查看详细信息(方法,参数等)

接下来我们要将这个WebService打包发布。

发布到IIS

在项目上点击右键,点击菜单中的发布,进入发布web对话框,点击下拉菜单选择新建配置文件 config1

目标位置: E:\calcul

下一步,发布

完成以上步骤后,我们可以在E:\calcul文件夹内看到生成的以下文件

配置IIS

在网站(默认网站或者自己建的网站huyWeb)下,添加虚拟目录

 浏览网站。

 可能遇到的错误:目录问题

问题2:打开WebService1.asmx出错,  “分析器错误消息: 未能创建类型“WebService1.Service1”。

解决:首先必须先在IIS在创建一个虚拟目录,如果这个时候直接在浏览器里调用WebService就会出现上述错误。原因是必须为上面 创建的虚拟目录创建单独的应用程序,方法是右击虚拟目录,点击“添加应用程序...”,目录与刚才的虚拟目录物理路径要一致,添加完成后就可以正常使用 WebService了!


然后设置其默认文档为WebService1.asmx。

使用WebService

打开vs,新建项目 Asp.net Web应用程序,项目中添加web窗体。在项目右键 添加服务引用,

单击高级—添加Web引用。

在URL中输入我们发布的WebService的URL地址,系统会自动搜索到服务.并且为Web引用设置一个引用名.此引用名将是我们在项目中引用这个服务的命名空间。

点击添加引用,完成。

接下来,我们在WebForm1的cs文件中写如下代码

huyService.WebService1 cal = new huyService.WebService1();
            int a = 14;
            int b = 5;
            Response.Write(cal.Sum(a, b).ToString());
运行

VS自带webservice调试工具,位置:C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\Common7\IDE\WcfTestClient.exe

使用WSDL工具生成WebService服务类

WebService有两种使用方式,一种是直接通过添加服务引用,另一种则是通过WSDL生成。既然有直接引用的方式,为什么还要通过WSDL生成呢? 因为通过WSDL生成,就只有一个.cs 文件,便于管理,更简洁。

电脑C盘搜索: wsdl.exe。进到wsdl所在的目录,然后cmd,wsdl /language:c# /n:XYS.MISS.Photo.PhotoAdmin /out:d:\Temp\TestService.cs D:\Temp\TestService.wsdl

在d:/Temp下就会产生一个TestService.cs 文件

  • /language:默认为C#语言,输出语言
  • /n:mynamespace namespace
  • /out:myProxyClass.cs 输出文件名

注意:D:\Temp\TestService.wsdl 是wsdl路径,可以是url路径:http://localhost/Temp/Test.asmx?wsdl

【直接只输入 wsdl  回车,看更多参数的用法】也可直接看:根据WSDL生成代理类方式

更多参考:

C# 利用VS自带的WSDL工具生成WebService服务类

Web Reference和Service Reference的区别

 

posted @ 2016-08-23 16:34  peterYong  阅读(5073)  评论(0编辑  收藏  举报