WebService发布过程及常见问题含Win7Word文档下载推荐.docx
《WebService发布过程及常见问题含Win7Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《WebService发布过程及常见问题含Win7Word文档下载推荐.docx(18页珍藏版)》请在冰豆网上搜索。
我们可以将这两个文件删除,然后依次在
上点击右键,选择“添加新项”。
在打开的窗口中选择“Web服务”,添加一个新的Web服务,命名为MyService。
我们同样可以将这两个名为Service的文件重命名为MyService。
但在重命名的时候,有四个地方的名称是必须更改的。
1、将Service.cs的名称改为MyService.cs
2、将Service.asmx的名称改为MyService.asmx
3、将Service.cs文件中的类名publicclassService:
System.Web.Services.WebService
改为publicclassMyService:
同时修改构造函数。
4、将Service.asmx文件中Class属性指向MyService,修改如下
<
%@WebServiceLanguage="
C#"
CodeBehind="
~/App_Code/MyService.cs"
Class="
Service"
%>
改为
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.NETFramework版本:
1.1.4322.573;
ASP.NET版本:
1.1.4322.573
出现该问题的原因如下:
我们使用vs2005创建WebService需要使用.netframework2.0,而在WindowsServer2003中,iis默认.net环境是1.1。
这时将发生不可识别的节点的问题。
因为connectionStrings是.NET2.0中的新增节点。
解决方法如下:
首先确保系统中已经安装了.NET2.0,然后更改IIS使用的ASP.NET版本。
操作过程如下:
打开windows“命令提示符”,即在运行中输入“cmd”,然后输入以下字符串
C:
WINDOWS\Microsoft.NET\Framework\v2.0.50727\aspnet_regiis-i–enable,执行安装操作。
如果当前系统未安装.NET2.0平台,则会提示“系统找不到指定的路径”,否则,将执行安装操作,如下图所示:
安装完成后,再次尝试执行“浏览”操作。
B)、分析器错误,提示内容如下:
“/testSer”应用程序中的服务器错误。
--------------------------------------------------------------------------------分析器错误说明:
在分析向此请求提供服务所需资源时出错。
请检查下列特定分析错误详细信息并适当地修改源文件。
未能创建类型“MyService”。
行1:
~/App_Code/MyService.cs"
MyService"
\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。
补充:
在本机上发布的WebService,如果本机能访问,而远程机器无法访问,一帮是由于Windows防火墙处于打开状态造成的。
将其关闭即可
webservice测试窗体只能用于来自本地计算机的请求
如果在本地测试webservice可以运行,在远程却显示“测试窗体只能用于来自本地计算机的请求”或者"
Thetestformisonlyavailableforrequestsfromthelocalmachine."
,那是因为没有开启远程访问的原因。
大家都知道,Web服务做好后,发布在网上,别人要调用你提供的接口时,是无法打开测试窗体的,这让很多的朋友都蛮郁闷,为什么别人提供的服务接口就能够打开测试窗体,而我的就不行呢?
是不是我的代码写的有问题呢?
其实不是这样的,下面,我就来教你如何实现这个功能,让客户端也能够打开测试窗体。
在web.config的<
/system.web>
中间加入如下配置节内容
webServices>
protocols>
addname="
HttpSoap"
/>
HttpPost"
HttpGet"
Documentation"
/protocols>
/webServices>