c# – 在何处配置WCF服务(REST和SOAP)
作者:互联网
我正在实现一个WCF Web服务,负责通过使用多个绑定通过REST和SOAP发布数据.该服务将托管在IIS上.
我以前写过一些WCF服务,并且通过使用web.config和在Global.asax文件中设置路由来了解一些配置,但是我对如何制作最“干净”的配置或最佳实践感到困惑.配置WCF服务.
这是我到目前为止所得到的:
web.config可用于设置绑定,端点,安全性等 – 在IIS上托管服务时是否需要这样做,还是可以在IIS上完成配置?
通过使用Global.asax,我们可以配置路由(以及许多其他东西).但这是正确的地方吗?
void Application_Start(object sender, EventArgs e)
{
RouteTable.Routes.Add(new ServiceRoute("Service", new WebServiceHostFactory(), typeof(Service)));
}
我花了一些时间在谷歌搜索这个主题,似乎每个链接都有自己对如何完成任务的看法.
因此,我想了解如何配置/实现WCF服务以支持以下内容:
>通过REST / JSON和发布数据
>通过SOAP / XML发布数据并发布元数据
>提供不同的服务; http://domain.com/Service和http://domain.com/AuthService
为了记录,我知道如何使用SOAP / REST发布数据 – 这不是问题.我只是想为服务做出最干净/最小化的配置.
任何反馈都非常感谢.
解决方法:
我就是这样做的.
Web.config文件:
<system.serviceModel>
<services>
<service name="Service">
<endpoint address="soap" contract="IService" binding="basicHttpBinding"/>
<endpoint address="rest" contract="IService" binding="webHttpBinding" behaviorConfiguration="restBehavior"/>
</service>
</services>
<behaviors>
<endpointBehaviors>
<behavior name="restBehavior">
<webHttp/>
</behavior>
</endpointBehaviors>
<serviceBehaviors>
<behavior>
<serviceMetadata httpGetEnabled="true"/>
<serviceDebug includeExceptionDetailInFaults="true" />
</behavior>
</serviceBehaviors>
</behaviors>
<serviceHostingEnvironment multipleSiteBindingsEnabled="true" />
</system.serviceModel>
合同如下:
[ServiceContract]
public interface IService
{
[OperationContract]
[WebInvoke(UriTemplate="/Update/{id}", RequestFormat = WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json)]
void Update(string id, Entity entity);
}
标签:c,wcf,web-services,web-config,global-asax 来源: https://codeday.me/bug/20190530/1184115.html