如何生成.svc文件?

时间:2012-03-29 13:04:45

标签: c# winforms wcf

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

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

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

这是我发现的:

  

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

有人可以指导我如何创建此文件以便我可以托管它吗?

谢谢!

2 个答案:

答案 0 :(得分:21)

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

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

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

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

答案 1 :(得分:12)

IIS托管.svc文件由@ServiceHost指令和属性服务组成。

<% @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 - Deploying an IIS-Hosted WCF Service

http://msdn.microsoft.com/en-us/library/aa751792.aspx