我是 WCF 的新手。我开发了一个示例 WCF 服务。我的服务使用 basicHttp
捆绑。
我使用 WAS 在本地 IIS 7.5 中托管我的服务,它工作正常。现在我想在我的网站上托管我的服务。
我搜索谷歌,但它们中的大多数都托管在 IIS 的 localhost 中。请告诉我该怎么做?最好引用一些教程或分步指南。
最佳答案
我相信你基本上有两种选择:
选项 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=
attributes 表示实现服务的类 - 完全限定其 namespace 。选项 2 - 将内容放入
App_Code
*.cs
文件直接进入.\App_Code
文件夹 *.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=
表示实现服务的类 - 完全限定其 namespace 。它必须包含至少一个端点——“mex”端点是可选的——但非常有用,尤其是对于开发和测试。它允许客户端“发现”服务并获取其服务描述,以便与它进行交互。在 IIS 中部署服务后,您可以使用 WCF Test Client 之类的工具查看它的运行情况。随 WCF 免费提供,或 SoapUI这是一个通用的 SOAP 测试实用程序(有免费版本供您使用)。
关于asp.net - 如何在我的网站上托管我的 WCF 服务?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10374131/