问题标签 [wcf-hosting]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
32 浏览

wcf - wcf 自托管在现实世界中的用途是什么

什么是 wcf 自托管在实践中的真实例子,我应该什么时候使用它?请举一个真实的例子。

非常感谢

0 投票
1 回答
829 浏览

c# - WCF 服务在从 http 更改为 https 后从客户端调用方法时返回错误“EndpointDispatcher 的 ContractFilter 不匹配”

我创建了一个 HTTP wcf 服务,它将被 Windows 客户端使用并使用。在我使用 HTTP 之前,我没有任何问题。现在我的客户想要将站点更改为 HTTPS。因此,出于开发目的,我使用了 IIS express 证书并设置了服务。现在,我的服务已使用 iisexpress 自签名证书在 IIS 中启动并运行。我可以通过浏览器以及 wcf 测试客户端工具浏览我的新 https 服务。

但是当我尝试从我的 Windows 应用程序调用该方法到新的 https wcf 服务时。我的服务实例已创建,但仅在调用方法期间出现以下错误:

System.ServiceModel.ActionNotSupportedException 未被用户代码处理 HResult=-2146233087 Message=带有 Action ' http://schemas.xmlsoap.org/ws/2005/02/rm/CreateSequence ' 的消息无法在接收方处理,因为EndpointDispatcher 的 ContractFilter 不匹配。这可能是因为合约不匹配(发送方和接收方之间的操作不匹配)或发送方和接收方之间的绑定/安全不匹配。检查发送方和接收方是否具有相同的合同和相同的绑定(包括安全要求,例如消息、传输、无)。

在服务中,我的绑定配置(配置 3 在 https 模式下使用,配置 2 在 http 模式下使用)如下:

在客户端,我们使用自定义绑定来创建服务实例。

添加服务引用后,在我的 Windows 应用程序上生成的 app.config 如下:

所以现在我可以看到我的服务实例正在成功创建。但是在调用方法时,我得到了上述错误。

在服务端移动到 https 之前和之后没有更改代码。它是相同的服务代码。它在 http 上完全可以正常工作,但在 https 上却被破坏了。

在使我的 wcf 服务为 https 后,我已经完全删除了服务引用并新添加了它。IIS express 自签名证书已安装并已在我的系统上可用。到目前为止,服务和客户端都在同一个系统中运行,因为它正在开发中

我怀疑我遇到了配置问题....但是经验较少,我无法弄清楚。

0 投票
0 回答
368 浏览

c# - 如何在 Visual Studio 2017 中创建模拟 WCF 服务

我有一个调用 Web 服务的反编译客户端,唯一的配置参数是端点 url,其余的都在服务类中。我想模拟从他的 wsdl 开始调用的服务,我设法使用 Visual Studio 2017 Web 项目并添加 .asmx 文件并从 wsdl 生成的接口实现方法。基本上我创建了一个模拟,因为通常是用soapui制作的。

问题是:如何使用 WCF 项目做同样的事情?

我已关注此帖子: 如何使用 WSDL 文件创建 WCF 服务(不拨打电话)

但是生成的文件(svcutil / sc)适用于内部控制台测试,但反编译的客户端调用(我无法修改配置客户端 - 请记住 .asmx 有效)显示此消息:

由于 EndpointDispatcher 中的 ContractFilter 不匹配,无法处理带有 Action '' 的消息

谢谢你。

0 投票
1 回答
349 浏览

c# - System.ServiceModel.ServiceActivationException , 在服务编译期间无法加载 CLR 类型(所有机器上都没有发生错误

在此处输入图像描述我最近将我的解决方案从 .netframework 4 升级到了 4.7.2(它在 VS 2010 中,我使用 VS2019 对其进行了升级)。该解决方案包含 WCF 服务和一些类库和一个 mvc 3 网站。我在运行我的网站时没有遇到任何问题,并且它可以正常运行。但是,我的其他同事得到了我的更改,但出现了以下错误。最近安装的VS 2019,奇怪的是我没有问题,但其他有,错误如下:

异常类型:System.ServiceModel.ServiceActivationException,System.ServiceModel,Version=4.0.0.0,Culture=neutral,PublicKeyToken=b77a5c561934e089

消息: 由于编译期间出现异常,无法激活服务“/Reporting/ReportingService.svc”。异常消息是:服务编译期间无法加载 CLR 类型“X.Services.Reporting.WebService.ServiceBehaviours.ReportingServiceHostFactory”。验证此类型是否定义在位于应用程序的 \App_Code 目录的源文件中、包含在位于应用程序的 \bin 目录的已编译程序集中,或者存在于安装在全局程序集缓存中的程序集中。请注意,类型名称区分大小写,\App_Code 和\bin 等目录必须位于应用程序的根目录中,不能嵌套在子目录中。

堆栈跟踪: System.ServiceModel.ServiceHostingEnvironment.EnsureServiceAvailableFast(String relativeVirtualPath, EventTraceActivity eventTraceActivity) System.ServiceModel.Activation.HostedHttpRequestAsyncResult.HandleRequest() System.ServiceModel.Activation.HostedHttpRequestAsyncResult.BeginRequest() System.ServiceModel.Activation.HostedHttpRequestAsyncResult.OnBeginRequest(Object state) System.Runtime.IOThreadScheduler.ScheduledOverlapped.IOCallback(UInt32 errorCode, UInt32 numBytes, NativeOverlapped* nativeOverlapped) System.Runtime.Fx.IOCompletionThunk.UnhandledExceptionFrame(UInt32 error, UInt32 bytesRead, NativeOverlapped* nativeOverlapped) System.Threading._IOCompletionCallback.PerformIOCompletionCallback( UInt32 errorCode, UInt32 numBytes, NativeOverlapped* pOVERLAP)

这让我觉得我的机器上可能有一些东西,而其他人没有。任何建议将不胜感激。

请注意我不直接使用 servicehostfactory

公共类 ReportingServiceHostFactory : UnityServiceHostFactory {....}

这就是我的 svc 文件的 <%@ ServiceHost Language="C#" Debug="true" Service="X.Services.Reporting.WebService.RepotingService" Factory="X.Services.Reporting.WebService.ServiceBehaviours.ReportingServiceHostFactory"% >

任何帮助将非常感激!

谢谢,

0 投票
2 回答
130 浏览

c# - 在 NetStandard 2.0 类库中托管 WCF 服务

我最近将带有升级助手工具的 dotnet framework v4.7.2 WCF 服务迁移到 NetStandard 2.0。该项目成功迁移和编译,我无法从 Visual Studio 或 dotnet cli 启动该服务。我从 dotnet cli 工具得到的错误是:

遇到致命错误。未找到执行应用程序所需的库“hostpolicy.dll”。

并且我尝试从 Visual Studio 启动服务时出现的错误,解决方案资源管理器 -> 右键单击​​ wcf 项目 -> 调试 -> 启动新实例是:

输出类型为类库的项目无法直接启动。

PS,当 WCF 服务还是 dotnet framework v4.7.2 时,我可以在 Visual Studio 中轻松启动服务,执行上述过程。