一、VS中创建Web服务项目。
二、WebService生成发布
三、网站发布
四、故障及解决方法
五、如何访问WebService
六、Win7下的WebService
发布和使用WebService需要首先安装IIS服务,IIS的安装过程这里就不在叙述,baidu上到处都是。
1、 VS中创建Web服务项目
在VS中“文件”->“新建”->“网站”->“ASP.NET Web服务”。创建过程很简单,和其他项目的创建过程基本相同,这里就不多说了。
这里我创建了一个名为MyWebService的解决方案,如下图所示,
系统会自动添加一个名为Service的asmx文件,并在App_Code文件夹中添加一个同名的代码容器类。
我们可以将这两个文件删除,然后依次在上点击右键,选择“添加新项”。在打开的窗口中选择“Web服务”,添加一个新的Web服务,命名为MyService。
我们同样可以将这两个名为Service的文件重命名为MyService。但在重命名的时候,有四个地方的名称是必须更改的。
1、 将Service.cs的名称改为MyService.cs
2、 将Service.asmx的名称改为MyService.asmx
3、 将Service.cs文件中的类名public class Service : System.Web.Services.WebService
改为 public class MyService : System.Web.Services.WebService
同时修改构造函数。
4、 将Service.asmx文件中Class属性指向MyService,修改如下
<%@ WebServiceLanguage="C#"CodeBehind="~/App_Code/MyService.cs"Class="Service"%>
改为
<%@ WebServiceLanguage="C#"CodeBehind="~/App_Code/MyService.cs"Class="MyService"%>
有点啰嗦了,其实文件中如果有名称不匹配的话,一般在调试的时候系统都会给出错误提示。
完成后的解决方案如图所示
注:Web.Config文件是生成时系统自动附加的。
2、 完成创建以后,我们就可以调试生成解决方案。调试通过后,将WebService发布。具体步骤如下:
右键点击项目,在弹出菜单中选择“发布网站”弹出发布位置选择窗口如图所示,这里我们选择已经创建好的目录D:\MyService,
点击“确定”按钮发布完成,这时我们可以到D:\MyService中查看发布文件。如下图所示。
3、下一步,我们需要将Myservice文件夹拷贝到C:\Inetpub\wwwroot目录下(重要)。如下图所示
然后依次右击“我的电脑”->“管理”->“服务和应用程序”->“Internet信息服务(IIS)管理器”打开IIS管理器,或者在控制面板中,通过“管理工具”打开“Internet信息服务(IIS)管理器”,如下图所示
展开“网站”节点,右键点击“默认网站”节点,依次选择“新建”->“虚拟目录”,打开虚拟目录创建窗口。如下图所示。
点击“下一步”
输入一个别名,如“MyServiceTest”(此处不一定要和WebService文件名相同)。点击“下一步”进入路径选择窗口,如图所示。
其中路径名必须选择是C:\Inetpub\wwwroot目录下,新拷贝的WebService文件副本。如上图所示。
点击下一步,开始设置访问权限。作为测试,我们可以将其全部选中。如下图所示。
点击下一步,系统会弹出安全警告,点击“是”按钮,然后点击“完成”按钮,完成WebService发布。
4、 截止到此,WebService已经发布完成,下面可以开始访问了。
选择我们刚刚创建的虚拟目录“MyServiceTest”,右键点击,选择“浏览”操作,打开浏览窗口,如图所示。
在上图右侧的浏览窗口中,点击MyService.asmx连接项,打开查看WebService中的可用接口。如下图所示:
注意:此过程会出现如下的错误提示
A)、配置错误 ,提示内容如下:
说明: 在处理向该请求提供服务所需的配置文件时出错。请检查下面的特定错误详细信息并适当地修改配置文件。
分析器错误信息: 无法识别的配置节“connectionStrings”
源错误:
行 10:
行 11: </appSettings>
行 12: <connectionStrings/>
行 13: <system.web>
行 14: <!--
源文件: C:\Inetpub\wwwroot\MyService\web.config 行: 12
--------------------------------------------------------------------------------
版本信息: Microsoft .NET Framework 版本:1.1.4322.573;ASP.NET 版本:1.1.4322.573
出现该问题的原因如下:
我们使用vs2005创建WebService需要使用.netframework 2.0,而在Windows Server 2003中,iis默认.net环境是1.1。这时将发生不可识别的节点的问题。因为connectionStrings是.NET 2.0中的新增节点。
解决方法如下:
首先确保系统中已经安装了.NET2.0,然后更改IIS使用的ASP.NET版本。操作过程如下:
打开windows“命令提示符”,即在运行中输入“cmd”,然后输入以下字符串
C:WINDOWS\Microsoft.NET\Framework\v2.0.50727\aspnet_regiis-i –enable,执行安装操作。
如果当前系统未安装.NET 2.0平台,则会提示“系统找不到指定的路径”,否则,将执行安装操作,如下图所示:
安装完成后,再次尝试执行“浏览”操作。
B)、分析器错误,提示内容如下:
“/testSer”应用程序中的服务器错误。 -------------------------------------------------------------------------------- 分析器错误 说明: 在分析向此请求提供服务所需资源时出错。请检查下列特定分析错误详细信息并适当地修改源文件。 分析器错误信息: 未能创建类型“MyService”。 源错误: 行 1: <%@ WebService Language="C#" CodeBehind="~/App_Code/MyService.cs" Class="MyService " %> 源文件: C:\Inetpub\wwwroot\ MyService \ MyService.asmx 行: 1 ------------------------ |
出现该问题的原因:
(1)、在步骤一中,重命名文件时,未完成所有文件名的统一修改。一般情况下,确保步骤一罗列出的所有位置的位置的文件名统一,即可解决该问题。
(2)、如果您可以保证没有文件名称错误。可以采用和上一个问题相同的解决方法来解决该问题。。
5、 远程访问
一般在远程机器上调用本机发布的WebService的地址即为本机IP+虚拟目录,例如,本次创建的WebService的访问地址如下:
http://192.168.2.94/MyServiceTest/MyService.asmx
查看该地址的方法为,打开WebService服务页 ,如下图所示
点击HelloWorld公共接口连接。跳转至HelloWorld定义页。如图所示。
点击“调用”按钮,将打开浏览器,显示调用结果。如图所示:
将浏览器地址栏中地址http://localhost/MyServiceTest/MyService.asmx/HelloWorld中的localhost换成本机IP(例如192.168.2.94),然后去掉最后的/HelloWorld,即为Webervice的访问地址http://192.168.2.94/MyServiceTest/MyService.asmx。
如果需要在远程C#项目中需要使用WebService,只需添加Web引用,然后在URL中输入以上地址即可。详细过程可以参考相关教材,或者求助谷、百两位大哥,遵从个人喜好。
6、 Win7下发布WebService
Win7下WebService的发布相对较为简单。从文件拷贝到创建虚拟目录的过程都与2003下完全相同,这里不再赘述。我们同样创建一个名为MyServiceTest的虚拟目录,如下图所示
然后在右侧的“MyServiceTest主页”区域中找到“目录浏览“图标,如下图所示
双击“目录浏览”图标打开目录浏览功能,如下图所示
点击右侧的“启用”按钮,启用目录浏览功能,如下图所示。
然后双击左侧的“MyServiceTest”虚拟目录节点,回到“MyServiceTest主页”选区。右键点击“MyServiceTest”虚拟目录节点,在弹出的菜单中选择“转换为应用程序”弹出应用程序转换窗口,如下图所示。
直接点击“确定”按钮。转成功,我们可以看到,此时虚拟目录图标已经发生了变化,如下图所示。
此时,在“MyServiceTest”虚拟目录节点上点击鼠标右键,依次选择“管理应用程序”->“浏览”即可在浏览器中查看MyService。
2011-9-8补充:在本机上发布的WebService,如果本机能访问,而远程机器无法访问,一帮是由于Windows防火墙处于打开状态造成的。将其关闭即可
本人亦初学WebService,以上均为个人见解及实际中遇到的问题和解决方法。希望对初学者有用。