【发布时间】:2014-03-21 17:25:01
【问题描述】:
如何让 OWIN 托管 SOAP 端点(不管是否涉及 WCF,SOAP 提供 WSDL,这使得某些客户端更容易使用服务,这就是我想要 SOAP 和 REST 的原因)
我怀疑答案是:实现您自己的托管 SOAP 端点的中间件。如果这就是答案,那就这样吧,但这是很多工作,所以如果是这种情况,我可能最终会坚持使用 WCF 并避免使用 OWIN。我很难相信还没有人实现过 SOAP 托管中间件...
通常,我们喜欢在我们的服务上同时使用 REST 和 SOAP 端点;目前我们使用 IIS 和 WCF RESTful 位来承载具有 [ServiceContract]/[OperationContract] 属性的 SOAP,其余部分使用 [WebInvoke] 属性定义,使用这些属性,服务无需针对不同的端点类型重新实现。
我们只是使用 ASP.NET 路由来添加新的ServiceRoutes,它添加了一个到 URI/REST 的 REST 绑定,其服务与肥皂绑定到 URI/SOAP 的服务相同。
现在我们正在考虑做一些新的服务工作,我想继续使用 OWIN,这样我们就可以通过托管不可知论来实现我们的新服务,因为 Windows 服务托管可以更好地为某些服务提供服务,而某些服务将得到更好的服务通过 IIS 服务托管。
我所有的东西都在摆弄,到目前为止,我想不出任何方法来获得由 OWIN 托管的 SOAP 端点。通过让我的服务继承自 ApiController,然后在 OWIN 应用程序的 Configuration 方法中使用这个小 sn-p 代码,我可以很好地处理其余部分:
public void Configuration(IAppBuilder app)
{
HttpConfiguration config = new HttpConfiguration();
config.MapHttpAttributeRoutes();
app.UseWebApi(config);
[...]
【问题讨论】: