我创建了我的第一个WCF服务,并在我的计算机上进行了测试,它可以工作。
存在的文件是一个接口、该接口的实现和一个app.config文件。
现在是时候用IIS在一个真正的服务器上托管它了,我被告知IIS在接收到呼叫时会查找一个.svc文件。
以下是我的发现:
IIS中承载的WCF服务表示为IIS应用程序中的特殊内容文件(.svc文件)。此模型类似于IIS应用程序内部将ASMX页面表示为.asmx文件的方式。.svc文件包含一个特定于WCF的处理指令(@ServiceHost),该指令允许WCF托管基础设施激活宿主服务以响应传入的消息。
请有人指导我如何创建这个文件,以便我可以托管它吗?
谢谢!
发布于 2012-03-29 13:22:12
您需要记住的是,IIS首先是一个web服务器,其次是WCF主机。
job服务器的工作是根据传入的请求呈现数据。大多数数据都是内容(请求路径与服务器上的文件直接相关),但对于WCF服务,IIS需要知道从这里转到哪里(因此,SVC文件和IIS的“指令”可以旋转您的服务)。
SVC文件所做的就是说,在/x/y/z.svc,我有一个WCF服务,它能够提供的不仅仅是服务器端的页面和内容文件。因此,请将其旋转,使其可用,并允许我的传入连接被处理。
如果这是一个托管在自己专用端口上的WCF服务,这将是另一回事,因为它不再与/Styles/base.css的额外请求以及/MyService/GetSomeObject/相争。
发布于 2012-03-29 14:34:53
IIS宿主的.svc文件由@ServiceHost指令和属性Service组成。
<% @ServiceHost Service="MyNamespace.MyServiceImplementationTypeName" %>服务属性的值是服务实现的CLR类型名称。使用此指令基本上相当于在您的自托管控制台程序中使用以下代码创建服务主机。
new ServiceHost(typeof(MyNamespace.MyServiceImplementationTypeName ));如果您的自托管应用程序在app.config中使用诸如“终结点”、“绑定”等WCF配置,您也可以将其放在web.config中。IIS托管服务使用与IIS外部托管的WCF服务相同的配置元素和语法。(除非您无法控制IIS托管服务中的基本/端点地址。)并将预编译的.dll文件放到IIS站点的应用程序\bin目录中。
而IIS托管服务的地址是.svc文件的地址.(http://localhost/Application1/MyService.svc)。
请查看下面的msdn - 部署IIS托管的WCF服务.
http://msdn.microsoft.com/en-us/library/aa751792.aspx
https://stackoverflow.com/questions/9925941
复制相似问题