在 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