我是WCF新手。我开发了一个示例WCF服务。我的服务使用basicHttp
绑定。如何在我的网站托管我的WCF服务?
我在本地IIS 7.5中使用WAS托管我的服务,它工作正常。现在我想在我的网站上托管我的服务。
我搜索谷歌,但其中大部分都托管在本地IIS中。请告诉我如何做到这一点?最好参考一些教程或一步一步的指南。
我是WCF新手。我开发了一个示例WCF服务。我的服务使用basicHttp
绑定。如何在我的网站托管我的WCF服务?
我在本地IIS 7.5中使用WAS托管我的服务,它工作正常。现在我想在我的网站上托管我的服务。
我搜索谷歌,但其中大部分都托管在本地IIS中。请告诉我如何做到这一点?最好参考一些教程或一步一步的指南。
你有两种基本的选择,我相信:
选项1 - “bin” 的部署(首选)
.\bin
文件夹中*.svc
文件在网站web.config
来定义您的终端和服务配置等现在你的WCF服务将在网站的基础地址到达,加上*.svc
的名字文件,例如
http://myserver/someweb/Myservice.svc
你*.svc
会是这个样子:
<%@ ServiceHost Language="C#" Debug="true"
Service="WCF_Simple_Service.HelloIndigoService" %>
的Service=
属性是指实现服务的类 - 其命名空间完全合格。
选择2 - 把东西到App_Code
*.cs
文件到.\App_Code
文件夹WCF*.svc
文件中创建一个网站
web.config
来定义您的端点和服务配置等。您的WCF服务现在可以在网站的基地址加上*.svc
文件的名称(例如,
http://myserver/someweb/Myservice.svc
你*.svc
会是这个样子:
<%@ ServiceHost Language="C#" Debug="true"
Service="Service"
CodeBehind="~/App_Code/Service.cs" %>
简单,样品web.config
可能是这个样子:
<system.serviceModel>
<behaviors>
<serviceBehaviors>
<behavior name="WithDebug">
<serviceMetadata httpGetEnabled="true" />
<serviceDebug includeExceptionDetailInFaults="true" />
</behavior>
</serviceBehaviors>
</behaviors>
<serviceHostingEnvironment multipleSiteBindingsEnabled="true" />
<services>
<service name="SimpleWCF.HelloIndigoService" behaviorConfiguration="WithDebug">
<endpoint
address=""
binding="basicHttpBinding"
contract="SimpleWCF.IHelloIndigoService" />
<endpoint
address="mex"
binding="mexHttpBinding"
contract="IMetadataExchange" />
</service>
</services>
</system.serviceModel>
你基本上定义<service>
标签 - 并再次: name=
表示实现该服务的类 - 完全限定其名称空间。它必须包含至少一个端点 - “mex”端点是可选的 - 但非常有用,特别是对于开发和测试。它允许客户“发现”服务并获得其服务描述,以便与其进行交互。
一旦您的服务部署在IIS中,您可以使用WCF免费提供的工具(如WCF Test Client)或者SoapUI这是一个通用SOAP测试实用程序(为您提供免费版本)使用)。
选项2中的错误behaviorConfiguration =“true”正确的是behaviorConfiguration =“WithDebug” –
@PavelJedlicka:你绝对是对的 - 谢谢你指出这个错误 - 修正! –
旧线,如果有人发现,但它...而不是你的* .SVC你也可以创建一个在您的Global.asax:
static Global()
{
RouteTable.Routes.Add(new ServiceRoute("ExternalServices/SOAP/test", new ninjectServiceHostFactory(), typeof(testService)));
}
我正面临类似的问题。你能否详细说明你的答案? –
@ mav3n:如果您正在托管一个网站并想要托管一个WCF服务(在您的网站中),那么您可以在global.asax中添加上面的代码。这样你就不需要添加一个单独的* .svc文件。你会像你一样会创建一个服务。 在我的例子中我使用Ninject,但显然你可以使用默认的构造函数。 – Roelant
参见:如何举办IIS中的WCF服务( http://msdn.microsoft.com/en-us/library/ms733766.aspx) - 无论是“localhost”还是任何其他服务器都完全不相关 - 只需遵循这些步骤即可。 –