如何生成.svc文件?

我创建了我的第一个WCF服务并在我的计算机上进行了测试,并且它可以工作。

存在的文件是接口,该接口的实现和app.config文件。

现在是时候在一个真正的IIS服务器上托管它了,我被告知IIS在接收来电时会查找.svc文件。

这是我发现的:

IIS中托管的WCF服务在IIS应用程序中表示为特殊内容文件(.svc文件)。 此模型类似于ASMX页面在IIS应用程序内表示为.asmx文件的方式。 .svc文件包含特定于WCF的处理指令(@ServiceHost),该指令允许WCF托管基础结构激活托管服务以响应传入消息。

有人可以指导我如何创建这个文件,以便我可以托管它?

谢谢!

您需要记住的是,IIS首先是Web服务器,其次是WCF主机。

Web服务器的工作是根据传入的请求呈现数据。 这些数据大部分都是内容(请求路径直接与服务器上的文件相关)但是在WCF服务的情况下,IIS需要知道从何处开始(因此SVC文件和IIS的“指令”要旋转你的服务)。

所有SVC文件都在说,在/x/y/z.svc我有一个WCF服务,它不仅仅是服务器端页面和内容文件。 因此,请将其旋转,使其可用并允许处理我的传入连接。

如果这是一个托管在它自己的专用端口上的WCF服务,那么这将是一个不同的故事,因为除了/MyService/GetSomeObject/之外,它不再与/Styles/base.css其他请求竞争。

IIS托管的.svc文件由@ServiceHost指令和属性Service组成

 <% @ServiceHost Service="MyNamespace.MyServiceImplementationTypeName" %> 

Service属性的值是服务实现的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