问题标签 [wcf-endpoint]
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.
c# - WCF 服务对流端点的服务调用在第三次调用时失败
快速概述我在这里得到的东西:
WCF Soap 服务通过 HTTPS 运行,消息凭证类型为证书。我有 2 个我使用的端点(除了 mex),1 个用于我的正常服务调用,另一个用于流文件。这是我的服务的 web.config(编辑了一些项目名称):
该服务有一个我正在测试的方法 DownloadDocument。这是签名:
DocumentDownloadResponse 下载文档(DocumentDownloadRequest 请求);
值得注意的是,当传入的数据无效时,服务会抛出异常,DownloadDocument 会捕获这些异常并在响应对象中传回错误消息。
DocumentDownloadRequest 如下所示:
并下载文档响应:
这是我从客户端调用它的方式:
其中 SecurityToken 和 LoginName 是需要验证的项目。奇怪的是,在我的测试客户端中,当我使用有效数据调用 DownloadDocument 时,我能够完美地下载文件任意多次。但是,如果我传入无效的 LoginName 或 SecurityToken,我会收到指示数据不正确的错误消息(如预期的那样)。但是,如果我传入 3 次无效数据,客户端就会超时。在本地运行服务我没有遇到这个问题,一切都按预期运行。奇怪的是,当我打开提琴手运行时,我没有遇到这个问题。当我在我的开发服务器上运行该服务时,我遇到了问题。
开发服务器上的配置与我在本地运行的配置相匹配。使用 SvcTraceTool 我没有看到任何错误,只是它只记录了前 2 个成功的调用,而不是失败的那个。它几乎让我觉得端点只是以某种方式关闭了自己。
悬崖:
1) 具有 2 个端点的服务,其中一个是流式传输(我关心的那个)。2) 能够使用流式端点调用方法来下载具有有效数据的文件 3) 服务正确捕获坏数据 2 次,第 3 次挂起。SvcTraceTool 中没有日志,客户端超时。
有任何想法吗?
谢谢
c# - 使用服务引用引用项目:未知端点
我有:
- WCF 服务 [应用程序 1]
- 与此服务通信的逻辑 [Project1 Application2]
- 使用此逻辑的网页 [Project2 Application2]
在Logic项目中,我添加了对Service的服务引用。在网页中,我添加了对Logic的项目引用。
现在在Logic项目中定义了Service的端点,因此我无法从WebPage连接到Service。
我知道我的解决方案是将部分逻辑配置复制到网页配置,但我认为这不是一个好的解决方案。
我想把逻辑作为一个黑匣子。我不知道我是否不会将它更改为另一个服务,也许是不同的东西,所以我不想让网页“知道”逻辑是如何工作的。
有没有更好的解决方案?我可以在Logic项目中做些什么来让WebPage知道如何连接到Service?
我遇到了异常:
Could not find default endpoint element that references contract
wcf - 部署使用 netTcpBinding(非 IIS 托管)的 WCF 服务
我正在通过 netTcpBinding 使用 WCF 开发客户端-服务器应用程序。
我的解决方案有 2 个项目,客户端一个和服务器一个。
到目前为止,我了解到为了让 WCF 服务正常工作,我必须对 app.config 文件进行一些配置。我做到了,一切正常。
但是现在当我将服务部署到服务器以使客户端连接时,我很难找到该怎么做。我的问题是,当我将服务部署到“localhost”以外的位置时,我不知道我必须在 app.config(或任何其他位置)中修改什么。
这是我的服务器应用程序的 app.config 文件:
“mex”端点和http协议基地址是为了让客户端获取元数据(否则我无法获取)。
因此,由于我事先不知道要部署服务器的 IP 地址是什么,我希望从配置或 ini 文件中读取端点(我宁愿不必为每个端点进行编译) .
另外,我必须在客户端修改什么?这是客户端 app.config 的相关部分:
任何意见,将不胜感激!
c# - 如何以编程方式在 IIS 中托管 WCF 服务?
我有一个 WCF 3.0 服务,它已在web.config
我的 Web 应用程序中配置,它通过.svc
文件托管:
地址值不应该是 web.config 中的纯文本,因为我们想使用我们拥有的加密算法对其进行加密,并且只将加密的值存储在那里。这怎么可能?
我在想也许我应该以编程方式在我们的 IIS 中托管 WCF 服务,以便可以在运行时通过读取EncryptedAddress
值来设置地址,AppSetting
然后在运行时对其进行解密。这怎么可能?
certificate - 具有 System.Data.Services.IRequestHandler 合同的数据服务端点抛出错误
尝试使用 System.Data.Services.IRequestHandler 合同创建端点时收到以下错误
无法加载操作“ProcessRequestForMessage”,因为它具有 System.ServiceModel.Channels.Message 类型的参数或返回类型,或者具有 MessageContractAttribute 和其他不同类型参数的类型。当使用 System.ServiceModel.Channels.Message 或带有 MessageContractAttribute 的类型时,该方法不得使用任何其他类型的参数。
我发现了另外两个与此错误有关的问题(此处和此处),但它们都没有令人满意的解决方案。我提取了Northwind 示例并能够重现该问题。
简化的 web.config 文件:
.svc 文件:
我可以通过用我自己的合同替换 System.Data.Services.IRequestHandler 合同并删除错误消息所抱怨的参数来摆脱错误。
引发错误的内置 ServiceContract:
我的 ServiceContract,它不会抛出错误(但也没有真正起作用,因为我没有复制所有DataService<T>
功能):
当我尝试在端点中使用内置 ServiceContract 时,我很困惑为什么会抛出此错误。我对数据服务相当陌生,所以我确信我错过了一些对其他人来说似乎很明显的东西。
谢谢
编辑:
归根结底,我的目标是使用证书身份验证,所以如果在解决这个问题时有办法做到这一点,我愿意接受。我一直在使用这个例子。
wcf - 单个服务中的多个接口问题
我在客户端和服务器都是 Windows 窗体的解决方案上使用 WCF 和 NetTcpBinding。该服务由其中之一托管。我正在使用 VS.2012。
在服务器端,我有几个服务合同(相关),所有这些都在一个服务类中实现。像这样:
并且它们应该可以通过 net.tcp://localhost:4545/control/ 访问,这将导致以下服务地址:
当我使用 svcutil.exe 生成客户端内容时,我看到它生成了两个服务客户端类,每个接口一个,所以当我使用 ServiceBClient 时,它会生成一个异常,表明它找不到带有合同“IServiceB”的“betaEP” ' 即使 app.config 具有相同的绑定配置并且定义了两个端点
和这个
如果这个客户端app.config是svcutil.exe根据服务器配置生成的,为什么找不到端点?
为什么它会生成两个客户端类而不是一个?那会是问题的根源吗?我有多个相关服务要公开,我不想占用一个以上的端口。请注意,这是网络 TCP 绑定。
c# - 更改 WCF 端点
我从 spring.net 示例中显示的初始示例中具有以下配置。
我可以读作
如果我上面的端点具有正确的 IP 地址和端口号,所有这些都可以正常工作。
我正在寻找一种在代码中编辑端点以使用启动时不知道的 IP 地址和端口号的方法。有没有办法做到这一点?
wcf - WCF basicHttpsBinding 警告:“根据其数据类型无效”
我创建了一个 WCF 应用程序,从 basicHttpBinding 开始。在 app.config 中,我配置了以下端点:
这很好。但是,我想将协议从 HTTP 更改为 HTTPS。如果我将端点声明更改为:
(注意:唯一的变化是 basicHttpBinding -> basicHttpsBinding)
我在构建时间收到以下警告:
为什么我会收到此警告?还有什么我需要改变的吗?
这是完整的 app.config:
c# - WCF Web 服务正在抛出 EndPointNotFoundException
我正在尝试配置 WCF 服务以支持与客户端服务的双工通信,并且由于我切换到 WSDualHttpBinding 我现在在 IIS 中的服务上得到了这个
在http://exampple.com/Temporary_Listen_Addresses/06be1668-e09f-441c-9fc9-999e4922d4a8/1002945c-979b-484e-a2c5-fa3470b6706d上没有可以接受消息的端点监听。这通常是由不正确的地址或 SOAP 操作引起的。有关更多详细信息,请参阅 InnerException(如果存在)。内部异常为空,基本上服务器上的服务托管在 IIS 中,然后我在客户端计算机上有一个连接到服务器的自托管服务和一个连接到自托管服务的客户端应用程序。wsDualHttpbinding 是从服务器到自托管服务,自托管服务公开一个命名管道供客户端应用程序进行通信。
这是服务中的 Web.config:
这是我的主机应用程序中的 App.config:
最后是来自客户端测试应用程序的 App.config:
c# - wcf 单向非阻塞操作
我需要这样的场景:客户端向服务器发送消息,而不是等待响应,并且不在乎消息是否正确发送。
在防火墙打开或没有连接到 Internet 的情况下,客户端在“SendMessage”处死机。我的意思是程序停止响应。我希望程序不关心结果。我的意思是如果没有连接,我希望程序更进一步,省略“SendMessage”或类似的东西。
我该怎么办,有没有非阻塞方法的解决方案?