在 MVC Web 应用程序中托管 WCF 服务

Posted

技术标签:

【中文标题】在 MVC Web 应用程序中托管 WCF 服务【英文标题】:Hosted WCF service inside MVC Web application 【发布时间】:2016-08-14 12:43:47 【问题描述】:

我在现有 MVC Web 应用程序中添加了 WCF 服务,以便在 OLAP 多维数据集工具 (Syncfusion) 上显示它。当我使用启用了 http 的站点执行应用程序时会发生什么,我可以访问 WCF 方法,如下所示,

代码

$("#OlapClient").ejOlapClient( url: "/Areas/OLAP/wcf/OlapClientService.svc");

但是当我从启用https 的站点执行此操作时,我无法访问 WCF 方法。它只是抛出404 method not found exception。这是我的 WCF 的以下 web.config。

Web.config

<system.serviceModel>
 <behaviors>
  <endpointBehaviors>

    <behavior name="OLAP.wcf.OlapClientServiceAspNetAjaxBehavior">
      <enableWebScript />
    </behavior>
  </endpointBehaviors>
  <serviceBehaviors>
    <behavior name="">
      <serviceMetadata httpsGetEnabled="false" />
      <serviceDebug includeExceptionDetailInFaults="true" />
    </behavior>
  </serviceBehaviors>

</behaviors>
<serviceHostingEnvironment aspNetCompatibilityEnabled="true" multipleSiteBindingsEnabled="true" />
<services>

  <service name="OLAP.wcf.OlapClientService">
    <endpoint address="" behaviorConfiguration="OLAP.wcf.OlapClientServiceAspNetAjaxBehavior" binding="webHttpBinding" contract="OLAP.wcf.IOlapClientService">

    </endpoint>
  </service>
</services>
<bindings>
  <basicHttpBinding>
    <binding name="BasicHttpBinding_IService1" />
  </basicHttpBinding>
</bindings>
<client>
  <endpoint address="http://localhost:15415/VibrantWS.svc/soap"
    binding="basicHttpBinding" bindingConfiguration="BasicHttpBinding_IService1"
    contract="ServiceReference1.IService1" name="BasicHttpBinding_IService1" />
</client>
</system.serviceModel>

【问题讨论】:

您的网站是否有有效的 https 证书? 是的,我的整个应用程序都可以工作,除了使用 wcf 方法的 Olap cube 工具。 也许你应该使用 WCF 绑定的安全配置 msdn.microsoft.com/en-us/library/hh556232(v=vs.110).aspx 【参考方案1】:

    如果您使用 .Net Frame work 4.5 高级服务,请确保“.Net Frame work 4.5 高级服务  WCF 服务选项  HTTP 激活(需要检查)”下的 IIS 配置。

    确保 web.config 中的以下设置如下链接所述。

https://msdn.microsoft.com/en-us/library/hh556232(v=vs.110).aspx

Enable SSL for my WCF service

HTTPS-enabled, IIS hosted WCF service, How to secure it?

    尝试使用 WEB API 控制器而不是 WCF 服务来避免此问题。

【讨论】:

谢谢,我开始使用 WebAPI,然后它就像一个魅力,没有像 WCF 那样繁琐的配置设置。 谢谢,拯救我的一天!

以上是关于在 MVC Web 应用程序中托管 WCF 服务的主要内容,如果未能解决你的问题,请参考以下文章

ASP.NET MVC 和 WCF 服务安全 - 身份验证、路由

在同一个 Web 应用程序中托管 WCF 服务和 Web API

WCF 托管在 Web 应用程序和兼容模式中

在 WPF 应用程序中托管 WCF Web 服务

如何从 Azure Web 应用程序与 IIS 中本地托管的 WCF 服务进行通信?

如何从 MVC 应用程序发出的 WCF 服务调用中获取域\用户名?