现在的位置: 首页 > 综合 > 正文

IIS部署webservice以及常见问题总结

2014年06月02日 ⁄ 综合 ⁄ 共 2928字 ⁄ 字号 评论关闭

本人最近在尝试通过IIS发布webservice,以下是一些经验总结,希望有所帮助。

在win7系统上部署IIS发布webservice

1.        webservice的机制:将发布web service的机器称为服务端,而将调用web service的机器称为客户端。
首先服务端将发布web 服务。
客户端调用步骤:
step 1: 加入web 应用,将刚才发布的web服务加入,这时生成了上述web服务在本地的一个代理,我们假设为WebProxy。
step 2: 客户端调用之前首先实例化一个该代理的对象,然后调用发布的方法
step 3: 客户端将调用信息包括方法名和参数加入到soap消息中通过http传送给web service服务端
step 4: 服务端从soap消息中获得调用信息,然后执行方法,将返回结果加入到soap消息中然后通过http传回
step 5: 客户端代理得到这个soap消息后解析处结果返回给调用客户端方法

2.        安装IIS过程,在控制面板程序à程序功能à打开或关闭windows功能       

3.    将Internet信息服务中的选项全部选中,点击确定。

4.        验证IIS是否正确安装,等待几分钟后IIS配置完成在浏览器输入http://localhost/iisstart.htm若出现下面的图标说明IIS安装成功

5.        发布服务的方式:①接下来是发布服务的情况,可以将服务直接放在C:\inetpub\wwwroot目录下,C:\inetpub\wwwroot即为网站的根目录,输入相应的网址即可访问(仅能在本地测试,不建议)。②通过Internet信息服务(IIS)管理器发布网站,先在 vs上生成网站à发布网站。“生成”->“发布网站”,这里会弹出一个对话框,什么也不需要修改,记下发布的目录。比如:D:\ WebSite1,我们需要目录下的文件。在IIS管理器
- 网站-新建网站(根据具体情况确定应用程序池以及是否新建主要修改选项:.net版本,windows是32还是64主要涉及的是编译的dll是32还是64位的) -自己新建网站下新建一个虚拟目录(注意修改端口),比如webservice,并将发布目录中的所有文件和目录拷贝到这个目录中。可以通过访问http://localhost/webservice/Service.asmx来验证。(注意:在①测试时很多用到的文件需要放在根目录C:\inetpub\wwwroot才能执行)

6.        配置注意事项:在这里要说一下是先装的vs还是iis。(建议先装iis)若先装的vs那么需要重装.net framework,否则可能出现HTTP Error 500.21。原因:在安装Framework v4.0(版本可以改)之后,再启用IIS,导致Framework没有完全安装。解决:开始->所有程序->附件->鼠标右键点击“命令提示符”->以管理员身份运行->%windir%\Microsoft.NET\Framework\v4.0.30319\aspnet_regiis.exe-i

说一下可能出现的问题:

 

HTTP错误 500.24 - Internal Server Error检测到在集成的托管管道模式下不适用的ASP.NET 设置。(多是托管管道模式不正确)

打开IIS管理器,选择应用程序池——你的网站应用程序池——单击右侧的“设置应用程序池默认设置”,打开,在常规中,将“启用32位应用程序”设置为“True”,将“托管管道模式”改为Classic,最后单击“确定”。

 

HTTPError 503。The service is unavailable

地址错误,主机没找到!

在IIS7.0中看到应用程序的应用程序池中的经典模式不知道怎么的就自己停止了。需要启动应用程序池。

 

 重新注册.net framework

今天在部署网站时出现了下面的错误:

Could not load type'System.ServiceModel.Activation.HttpModule' from assembly 'System.ServiceModel,Version=3.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089'.]

原因是在安装了IIS后又装了其他版本的framework, 导致assemble中的版本和程序使用的版本不一致了。

解决办法是使用 aspnet_regiis.exe -iru 重新注册iis。

操作如下:

使用administrator权限开启command promt(一定要用管理员权限打开,否则注册不上)

进入framework的文件夹(C:\Windows\Microsoft.NET\Framework\),选择相应的版本下的文件夹(v4.0.30319),使用命令

aspnet_regiis.exe -iru

等注册完成后网站就可以打开了。

重注册2.0的方法同上

C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\aspnet_regiis.exe–i

 

The test form is only available for requests from the localmachine.

web.config文件  <system.web>标签内添加如下标签 

<webServices>
       <protocols>

           <add name="HttpGet"/>
           <add name="HttpPost"/>
       </protocols>

    </webServices>

 

HTTP错误 403.14 -Forbidden Web 服务器被配置为不列出此目录的内容.

IIS管理器->对应的应用程序右侧视图窗口,双击“目录浏览”->选择启用,即可

当只是在本地测试时可以不发布直接放在根目录,发布后则不会出现以下问题,要启用目录浏览

 

是否启用32位系统(某些dll不可用)

有些dll文件是32位系统编译的,那么在IIS下必须使用32位系统应用程序否则会

dll文件是在64位机下编译的,而你的服务器是32位机,所以无法调用
或者你的dll文件是在64位开发环境下下编译的,而你现在的调用程序是的32位,所以无法调用

 

异常详细信息: System.Runtime.InteropServices.COMException:异常来自HRESULT:0xE004002A

吧所要操作的文件所在目录的目录权限设置为对 Everyone 都是完全控制。方法是在文件夹上点右键选属性,选安全然后添加 Everyone 完全控制。

 

异常来自HRESULT:0x80040228

多是license许可问题

 

在服务器以访问在其他客户端不能访问

防火墙需要添加设置项:防火墙——>高级设置——>入站规则——>右边的新建规则——>端口——>选择TCP——>特定本地端口(填写你的端口如4300)——>记得填写自记的网站名称以便于下面的“允许通过”——>下一步……完成。

抱歉!评论已关闭.