C#的WebService完全教程(之六)



常见问题

● 本地调试时出现“HTTP错误403.14……服务器被配置为不列出此目录的内容”

多半是因为源码中“[WebService(Namespace = "http://tempuri.org/")]”中红色的部分并不是互联网上唯一的(可能你在别的服务器上用这个域名配置了WebService),将它改成唯一的(哪怕是不存在的)域名即可,但注意,一定要以“/”结尾。

还有一个怪毛病:你在项目属性中更改了.net版本后再调试,它也报这个错误。解决方法时,改.net版本后,胡乱写一个域名调试一下,再恢复原来的域名调试。

●提示手动配置.net4.0

使用dos命令:

cd C:\Windows\Microsoft.NET\Framework64\v4.0.30319

aspnet_regiis.exe -i

正常情况下,dos窗口会出现“ASP.NET <4.0.30319.0>安装完毕”。

但也可能在这句话前面还有:“此操作系统版本不支持此选项。管理员应使用“打开或关闭Windows功能”对话框、“服务器管理器”管理工具或dism.exe命令行工具安装/卸载包含IIS8的ASP.NET 4.5……”那就要用下面的方法,用服务器管理器来处理这个问题了。

●.net版本的匹配(包括所谓.asmx的MIME类型的问题)

首先,在源码的项目属性中可以看到这个WebService的.net版本,而且也可以修改。

然后,在服务器的IIS中,可以看到网站的.net版本,就是在IIS的菜单中点击“应用程序池”,它就列出了现在已经在网站上安装的各种.net版本。

如果网站的.net版本没有达到项目的.net版本,很不幸,这个WebService是无法打开的。

通过互联网访问WebService,用的是形如“域名/WebService文件名.asmx”的地址,如果在网页浏览器中输入这个地址按回车键后得到的是“404错误”(找不到文件),而地址没有写错,那里确实有这个文件,那就是.net版本不匹配了。

这时报错信息中还有建议你配置.asmx的MIME类型的话,这是胡说,因为.asmx根本就没有MIME类型,问题还是出在.net版本上。项目的.net版本很容易在VisualStudio中修改,麻烦的是网站的.net版本。

刚才用dos方法在网站上安装.net也不管用,现在就需要安装“包含IIS8的ASP.NET 4.5”了。这句话翻译得有些别扭,实际上应该是“包含ASP.NET 4.5的IIS8”。安装方法是:

服务器管理器 > 添加角色和功能 > Web服务器IIS > Web服务器 > 应用程序开发 > ASP.NET 4.5

如果网站的.net版本是4.5,项目的是4.0,这个没问题,但反过来就不行了,网站的版本低于项目的版本,就运行不了了。

●更换服务器之后要做的事

1.在WebService的源码中,将“[WebService(Namespace = "http://tempuri.org/")]”中红色的部分,改为新的域名(一定要以“/”结尾)。重新生成,上传到新的服务器,用网页浏览器检查,如有问题,按上面说的方法解决。

2.用VisualStudio打开调用此WebService的C#程序的源码,在解决方案资源管理器中,在项目目录下,在“Service References”文件夹中,找到此WebService的配置文件(比如,“ServiceReference1”),右键点击它,在弹出菜单中选择“配置服务引用”,在弹出窗口中,在“地址”栏中,填写新的地址,点“确定”按钮。若联网正常、地址无误、网站对此WebService的兼容(包括.net版本的匹配)没有问题,现在VisualStudio会自动更新此服务。

3.同样是在这个解决方案资源管理器中,在“Service References”文件夹下面,找到文件“app.config”,双击打开它,在它的源码中,把所有的旧地址换成新地址。

举报
评论 0