首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 服务器 > IIS >

IIS站点中支配WCF项目 - C

2012-12-28 
IIS站点中部署WCF项目 - C#图1 显示IIS站点中部署成功的WCF计算服务图2Client测试对WCF服务的成功调用IIS

IIS站点中部署WCF项目 - C#

                                     图1 显示IIS站点中部署成功的WCF计算服务IIS站点中支配WCF项目 - C                                   图2  Client测试对WCF服务的成功调用

IIS站点中部署 WCF项目

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

[正        文]       本文涉及到的内容只有三个字:关键词

[关  键  词]      WCF项目创建;IIS服务安装;Server Application Error;MSDTC服务安装; 虚拟映射;IIS服务中部署测试项目;IIS服务中部署WCF项目;

[内容核心]      将一个基于WCF计算器的服务部署在IIS站点中,创建一个客户端调用寄宿在IIS进程中的服务。实现 前言中 图2所示的简单的加减乘除运算。

一、创建WCF项目      IIService工程   

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

1. 如图3所示。用VS2010创建一个名为 IIService的空工程,并删默认生成的第一个空项目。   

2. 在空的工程中右键添加三个项目 ICalculculator、IIService、IISClient      

      ICalculculator:  Class Library 项目,创建服务接口<契约>  ICalculator 含 4个方法、将接口定义成服务契约。   

      IIService:        Class Library 项目,实现ICalculculator接口,创建WCF服务。   

      IISClient:         Console Application项目,创建客的户端 调用 IIS站点上的 WCF服务。

IIS站点中支配WCF项目 - C

         图3 创建 WCF项目 IIService工程

当你看到这儿的时候,不过得提一下。A

1)Artech在《我的WCF之旅(1):创建一个简单的WCF程序》中已经请清楚了WCF应用的基本结构模型与如何创建一个WCF项目。我不再重复Artech里面的内容。

2) 至于这个项目的源代码与《我的WCF之旅(1):创建一个简单的WCF程序》的源代码 在这篇文章的最后 我会免费分享给大家在CSDN上下载。

3) 配置文件路径问题  App.config / Web.config 如何与应用程序相关联?

    IISClient / IIService中有两个配置文件。App.config / Web.config

   答曰:自动关联。e.g.IISClient  如下示。在创建channelFactory对像时会在根目录自动搜寻App.config

    由 System.ServiceModel 命名空间中的函数实现。


                        图4 创建IIS虚拟目录

     2) D:\VisualWeb 映射为IIS虚拟目录

         如图5所示。右键选中 [默认网站]-[新建]-[虚拟目录]

        输入 虚拟目录名称 VisualWeb下一步选择D:\VisualWeb的路径即可。

       完成后会在  [默认网站]下面出现一个VisualWeb文件夹,单击会显示 VisualWeb中的内容 Index.asp

IIS站点中支配WCF项目 - C


                                 图5 D:\VisualWeb 映射为IIS虚拟目录

IIS站点中支配WCF项目 - C

                                 图6 映射结果


         3)  i演示

如图5所示。右键浏览 若你幸运。出现下面的结果。则后面的事少了很多。。IIService部署问题也就没了。。说明IIS站点中部署项目可以访问了。。

IIS站点中支配WCF项目 - C

                 图7 第一个asp测试程序成功 




三、IIS部署中的问题:Errors

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

如果不幸。你没看到 图 7.看到了下面。。说明你就会麻烦了


1. 无权查看网页

[说明]: 对于编设动态脚本的网页,可以对浏览器作如下设置   工具- Internet选项-高级-显示友好http错误信息
Tip:这样在测试项目时能知道详细信息。。。important!

IIS站点中支配WCF项目 - C


2.Server Application Error

Server Application Error The server has encountered an error while loading an application during the processing of your request. Please refer to the event log for more detail information. Please contact the server administrator for assistance.


答曰:无权查看网页

这个问题比较好解决。说明你磁盘访问权限出了问题。。为磁盘分区添加Everyone权限即可。

如果你研究过 Adminstrator与Guest与Users权限问题。这将很有趣。。感兴趣的不访去研究一下。这在多人共用一台电脑时对磁盘的访问权权很有用。。不过这问题你们一般不会用到。不深入了。。


说明: 开启下图 [安全] 标签

1)  得去 [工具]-【文件夹选项】-[查看]-把 [使用简单文件共享]的勾去掉。才会显示。。

2)  windows系统默认情况下是关闭该功能的。这意味着你是看不到图8的。 

如图8所示

IIS站点中支配WCF项目 - C

图8 为磁盘添加Everyone权限


答曰:Server Application Error比较麻烦。

1)  因为你要用在大堆命令。像我一样去了解IIS服务的 Inetpub目录及 n多.vbs文件的使用。。

2)  去了解 IWAM_COMPUTERNAME 及  IUSR_COMPUTERNAME 这两个在WEB服务中的作用。。。

不过这问题已经有答案了。。下面的已经经我验证过了。。如果遇到,你不用找了。感谢这篇文章的作者吧。。。

iis出现 Server Application Error 错误解决方法

IIS站点中支配WCF项目 - C




四、IIS服务中部署WCF项目-Client测试

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

按  2. 创建IIS虚拟目录  第一个asp.net测试程序的创建 + 演示

Client测试步骤

1)在 [默认网站] 下创建一个 IIService 虚拟目录。

2)把 D:\IIService\IIService\IIService 即 WCF服务 IIService所在的路径  直接映射为 IIS的虚拟目录。如图9所示。

3)  右键 [浏览] iService.svc你将看到本文的开篇 [图1显示IIS站点中部署成功的WCF计算服务] 中显示的 Web.config结果。证明 WCF服务[iService.dll]已经寄宿到 dllhost.exe进程中,即IIS进程中。。[dllhost.exe进程见 附录1]      iService.svc 附录2 源代码

4)运行 IISClient,单步调试 你会看到  图2Client测试对WCF服务的调用 的结果。。。         回头去看那两张图1/图2吧。

IIS站点中支配WCF项目 - C

图4.1 映射结果


IIS站点中支配WCF项目 - C

图 4.2 IISClient运行

现在可以直接运行 IISClient了。。




..............最后

附录1

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

IIS 不同版本不同宿主进程:
1)IIS5与IIS6架构不同.IIS 5.x(dllhost.exe)   IIS6.0(W3WP.exe  issapp.vbs提供命令操作)

2)Artech提到的是IIS 6.0 所以才会有W3WP.EXE进程。在 windows xp sp3的任务管理器中,你是看不到w3wp.exe进程的。你只能看到 dllhost.exe进程。iService.dll寄宿在 dllhost.exe进程中。可以用 tasklist /svc查看 dllhost.exe的 PID

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

寄宿在 IIS 5.X 进程 dllhost.exe 中的不同 服务用 不同的 PID来区分。运行 帐户为 前面提到的 IWAM_YOURCOMPUTERNAME  <[任务管理器]-[进程]中可查看 dllhost.exe运行帐户>      如图 X所示。 但是我用tasklist/svc的 [服务] 中去看不到 iService.dll  寄宿在 dllhost进程中的服务。。目前在纠结这问题。。

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

3) Dllhost是 COM+的宿主进程,IIS使用DLLhost来运行ASP与其它脚本引擎。COM+独立运行要采用IWAM_COMPUTERNAME用户运行 (现在知道IWAM_XX的作用了吧)

4)  windows xp sp3以下的是 dllhost.exe 启动方式是 IIS Admin服务<Inetinfo.exe进程: 运行web服务管理进程,负责管理 www服务 smtp服务 ftp服务 nntp服务>       可以用 services.msc  查看 inetinfo.exe进程的别名就是 IIS Admin服务。

5) MSDTC可以google或baidu下。。这在Server Application Error中有讲到。。请细看。。

IIS站点中支配WCF项目 - C

图 X 


附录2:文中提到的源代码下载 

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

1、IIS站点中部署 WCF项目 C#源代码

2、我的WCF之旅:计算器 WCF样例源代码


.........all over。。。

热点排行