问题标签 [wshttpbinding]

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 投票
3 回答
16996 浏览

.net - 如何使用仅传输安全性的 wsHttpBidning 启用 WCF 会话

我目前部署了一个 WCF 服务,并启用了 basicHttpBindings 和 SSL。但是现在我需要启用 wcf 会话(不是 asp 会话),所以我将服务移至 wsHttpBidnings 但未启用会话

我已经设定

但是当我设置

服务合同上写着

合同需要 Session,但 Binding 'WSHttpBinding' 不支持它或未正确配置以支持它。

以下是 WSHttpBinding 的定义

请在这件事上给予我帮助

0 投票
1 回答
174484 浏览

wcf-binding - BasicHttpBinding vs WsHttpBinding vs WebHttpBinding

In WCF there are several different types of HTTP based bindings:

What are the differences among these 3?

In particular what are the differences in terms of features / performance and compatability?

0 投票
3 回答
2170 浏览

.net - 帮助在 .net 上设置 wsHttpBinding WCF 服务

我正在尝试使用 wsHttpBinding 托管 WCF 服务。我使用 makecert 创建了一个证书,并在 web.config 中放置了一些行。

这是我得到的错误:

在谷歌搜索时,证书文件的访问权限似乎存在一些问题。我使用 cacls 授予 NETWORK SERVICE 和我的用户名的读取权限,但它没有改变任何内容。

我还进入了证书文件属性中的安全设置,并完全控制了 NETWORK SERVICE 和我的用户名。再次无济于事。

您能指导我解决问题所在以及我需要做什么吗?我对这些证书的东西真的很不满意。

这是我的 web.config:

0 投票
1 回答
3229 浏览

wcf - IIS 7 中具有安全模式 TransportWithMessageCredential 的 WsHttpBinding 不起作用

我们目前正在将 WCF 服务从 IIS 6 迁移到 IIS 7。该服务包含一些用于内部流传输的非 SSL 端点和一些使用 SSL 保护的公开端点。

使用 wsHttpBinding 和安全模式="TransportWithMessageCredential" 实现公共的安全端点。绑定内容如下:

凭据根据自定义用户存储库进行身份验证以进行验证。

将服务部署到 IIS 7(64 位 Win2k8)后,所有服务(basicHttpBindings)都正确响应,除了 wsHttpBindings。如果使用 https 触发,我们总是会收到 HTTP 400 状态代码(错误请求)。

在 IIS 中启用跟踪后,我们可以缩小问题的范围,尽管来自跟踪的消息并没有真正帮助:

到目前为止完成的步骤:

  • 在 IIS 7 中重新安装 WCF 扩展 (ServiceModelReg.exe -r -y)
  • 为主机启用 https 协议,向主机添加自签名证书
  • 在 wcf 配置中使用 dns/identity 设置
  • 向 wcf 服务配置添加基地址

经过 2 小时的谷歌搜索并尝试完成这项工作,我最后希望您能求助:有人知道 IIS 7 的这种奇怪行为吗?

0 投票
5 回答
14583 浏览

wcf - 在具有消息安全性的 WCF 中使用 wsHttp 传输大量数据(序列化对象)

我有一个案例,我需要使用 WCF 使用 wsHttp传输大量序列化对象图(通过NetDataContractSerializer )。我正在使用消息安全,并希望继续这样做。使用此设置,我想传输序列化的对象图,它有时可能接近 300MB 左右,但是当我尝试这样做时,我开始看到 System.InsufficientMemoryException 类型的异常出现。

经过一番研究,默认情况下,在 WCF 中,服务调用的结果似乎包含在默认情况下包含在单个消息中,该消息包含序列化数据,并且默认情况下此数据在服务器上缓冲,直到整个消息被完全写入。因此,由于该缓冲区已满,服务器正在耗尽允许分配的内存资源,从而导致内存异常。我遇到的两个主要建议是使用流式处理或分块来解决这个问题,但是我不清楚这涉及到什么,以及在我当前的设置(wsHttp/NetDataContractSerializer/Message Security)下这两种解决方案是否可行。到目前为止,我知道使用流式消息安全性是行不通的,因为消息加密和解密需要对整个数据集而不是部分消息起作用。然而,分块听起来可能是可能的,但我不清楚如何使用我列出的其他约束来完成。如果有人可以就可用的解决方案以及如何实施它提供一些指导,我将不胜感激。

我应该补充一点,就我而言,我真的不担心与其他客户端的互操作性,因为我们拥有并控制通信的每一端,并使用共享接口模式将数据传输到任一端。因此,我对任何符合使用带有消息安全性的 wsHttp 来传输使用 NetDataContractSerializer 序列化的对象图的限制的想法持开放态度,我更喜欢不需要大幅更改现有服务和周围基础设施的解决方案。

相关资源:

我也对可以对这些数据进行的任何类型的压缩感兴趣,但是一旦我可以转换到 .NET 4.0 以便客户端将自动支持 gzip,我可能最好在传输级别执行此操作标题,如果我理解正确的话。

更新(2010-06-29):

关于我如何得出缓冲消息太大导致我的问题的结论的一些历史。最初我在测试时看到了下面的CommunicationException

基础连接已关闭:连接意外关闭。

最终,在运行此程序并进行更多日志记录后,我发现导致指定消息出现问题的底层InsufficientMemoryException异常。

未能分配 268435456 字节的托管内存缓冲区。可用内存量可能很低。

这源于以下方法。

System.ServiceModel.Diagnostics.Utility.AllocateByteArray(Int32 大小)

所以换句话说,失败来自分配数组。将序列化的相同数据写入磁盘时,它占用大约 146MB,如果我将其减半,那么我将停止收到错误,但是我没有深入研究破坏缓冲区的特定阈值以及它是否特定于我的系统或不是。

更新(2010-12-06):

我想此时我正在为以下内容寻找一些澄清。我的理解是,默认情况下,具有消息安全性的 WCF wsHttp 在将响应发送回客户端之前需要在服务器上缓冲整条消息(通常是我返回的整组数据),从而导致我的问题。

可能的解决方案:

  • 限制数据大小 - 通过使用某种形式的压缩、编码或限制使用某种类似分页的方法返回的实际数据,以避免消耗传出缓冲区的最大容量。
  • 流式传输 - 允许通过 WCF 以流式传输方式发送大量数据,但这与 wsHttp 或 MessageSecurity 不兼容,因为这些技术需要缓冲所有数据。
  • 分块通道 - 允许将数据分解为单独的消息,但此时我不确定这对服务合同设计的限制,以及我是否仍然可以将 wsHttp 与消息绑定一起使用。

限制我可以返回的数据只能在一定程度上起作用,并且与 Streaming 选项一样,这些选项需要对 WCF 服务调用之外的许多较低级别的工作进行编码。所以我想我需要知道的是,分块通道的任何可能实现是否可以通过允许将一组数据分解为服务器上的单独消息,然后在客户端上拼凑在一起,从而避开大消息问题这样我就不必更改现有服务合同的接口/形状,并且该过程几乎对每个服务实现的客户端和服务器部分隐藏,同时仍使用消息安全性和 wsHttp。如果分块通道将要求我重写我的服务合同以公开流,那么我不会' 看不出这与 Streaming 解决方案有何不同。如果有人可以简单地为我回答这些问题,我将奖励他们并将其标记为答案。

0 投票
2 回答
4659 浏览

wcf - 如何在 IIS7 中配置 WCF 服务:HTTPS、Sessions、wsHttpBinding (SOAP)

情况:

  1. 我们有带有 IIS7 的 Windows 2008 Web 服务器,(.NET4)
  2. 我们只能通过默认的 HTTPS (443) 端口 与网络服务器通信
  3. 服务器上托管了一个 ASP.NET 网站,该服务是网站代码的一部分。
  4. 一些客户端(支持 WCF 的桌面应用程序)希望与我们的新 WCF Web 服务进行通信
  5. 双方之间的消息大小可以是 100 - 400 kb
  6. 我们希望保留 IIS 的 WCF 服务部分。
  7. 在客户端,我们请求自定义用户名和密码以连接到我们的服务
  8. 有更长的会话,后面有更多的 DB processign
  9. 并且有快速的短会话——比如来自客户端的 ping
  10. 客户端密码存储在我们的网络服务器上(来自 DB) - 客户端应根据这些密码进行身份验证。

问题
1. 从这些限制来看,最好的协议是什么?
2. 你会默认使用会话吗?
3.首先尝试了这个绑定(它可以工作,但是没有会话支持)

要启用会话:

我的感觉是这种传输和消息安全性太多了——我的意思是我们真的需要这个来允许与 wsHttpBinding 的会话吗?

0 投票
2 回答
4940 浏览

c# - WCF 服务:WSHttpBinding

我已经创建了测试自托管 wcf 应用程序并尝试添加支持 https。服务器应用程序的代码是:

我应该输入什么名字(地址)

因为“你好”不正确?

谢谢。

0 投票
3 回答
14054 浏览

c# - 如何读取 app.config 中定义的属性的值?

我有一个 app.config 文件,格式为:

我想读取名称为“XXX”的节点端点的属性“地址”处的值。请告诉我怎么做!

(继续下面与 marc_s 的讨论。很抱歉将文本放在这里,因为评论不允许格式化代码)@marc_s:我使用下面的代码来阅读上面的文件,但它表明 clientSection.Endpoints 有 0 个成员(Count=0 )。请帮忙!

0 投票
1 回答
1475 浏览

wcf - 使用 powershell2 访问 wcf Web 服务

我正在尝试编写一个访问我的 wcf web 服务之一的 cmdlet。

我一直在研究新的 cmdlet:New-WebServiceProxy,但它似乎真的能够使用 ASMX Web 服务。

我看过这篇文章;专注于 Powershell v1.0 我宁愿使用更好的方法(如果存在的话)。 http://keithhill.spaces.live.com/blog/cns!5A8D2641E0963A97!645.entry

从我使用此 Web 服务的其他 .net 应用程序中,这是我使用的那种配置;

有人想给我建议吗?

0 投票
2 回答
2132 浏览

java - 使用 WSHttpBinding 的 WCF 和 Java 互操作,

我试图让一个简单的 WCF 应用程序与 Java 客户端一起工作。服务使用 WSHttpBinding 公开了一些简单的操作,它做得很好。

现在,由于某种原因(可能是由于 Java 端的 WS-* 规范不完整),似乎不可能为远程系统上托管的这个 WCF 服务生成 Java 客户端。

但是,与 basicHttpBinding 一起使用时一切正常。

如果您成功使用或已经实现了 WCF (wsHttpBinding),它可以与 Java/非 WCF 客户端互操作?