使用 Microsoft 登录
登录或创建帐户。
你好,
使用其他帐户。
你有多个帐户
选择要登录的帐户。

简介

Windows 通讯基础 (WCF) 没有要发送安全的邮件,然后接收不安全的响应,或以不安全的邮件发送和接收安全的响应的功能。在本文中介绍的修复程序添加一个新的enableUnsecuredResponse属性。EnableUnsecuredResponse属性的默认值为false。如果此属性的值设置为true时,WCF 中启用了下列新功能︰

  • 即使受待发邮件使用安全套接字层 (SSL) 协议签署的消息正文,WCF 客户端可以接受不安全的响应。

  • WCF 服务可以发送 SOAP 信封中有没有安全标头,即使请求安全的不安全的响应。

注意:EnableUnsecuredResponse属性仅适用于CustomBinding类型。

解决方案

如果您使用.NET Framework 3.0,以下基于 Microsoft 知识库文章中安装的修复程序描述︰

967105解决︰ 使 WCF 安全的邮件发送和接收一个修补程序进行不安全的响应,并将不安全的邮件发送和接收安全的响应,可用于.NET Framework 3.0如果使用的 Windows 7 或 Windows Server 2008 R2 上的.NET Framework 3.5 Service Pack 1,以下基于 Microsoft 知识库文章中安装的修复程序描述︰

977420修补程序汇总包可在窗口通信基础.NET Framework 3.5 SP1 的 Windows 7 中,为 Windows Server 2008 R2 中修复的问题
如果在其他操作系统上使用.NET Framework 3.5 Service Pack 1,安装以下修补程序来解决此问题。

受支持的修补程序现已从 Microsoft 推出。但是,它被用于纠正本文中描述的问题。它仅应用于正经历此特定问题的系统。此修补程序可能会接受进一步的测试。因此,如果这个问题没有对您造成严重的影响,我们建议您等待包含此修复程序的下一个 service pack。

要立即解决此问题,请联系 Microsoft 客户支持服务,以获取此修复程序。Microsoft 客户支持服务的电话号码以及有关支持费用的信息的完整列表,请访问下面的 Microsoft 网站:

http://support.microsoft.com/contactus/?ws=support注意:在特殊情况下,如果 Microsoft 支持专业人员确定某个特定的更新能够解决您的问题,可能取消的通常情况下收取的电话支持服务费用。照常收取支持费用将应用于其他支持问题和对于特定更新无法解决的问题。

系统必备组件

要应用此修补程序,您必须具有.NET Framework 3.5 Service Pack 1。

重启要求

不需要重新启动计算机,如果正在使用.NET Framework 的实例不在应用此修补程序后。

修补程序替换信息

此修补程序不替换任何其他修补程序。

文件信息

此修复程序的英文版具有的文件属性 (或更新的文件属性)在下表中列出。日期和为这些文件的时间以协调世界时 (UTC) 列出。当您查看文件信息时,它将转换为本地时间。要了解 UTC 与本地时间之间的时差,请使用控制面板中的日期和时间项中的时区选项卡。

对于所有基于 x86 版本的文件信息的 Windows Server 2003 和 Windows XP 中的

文件名称

文件版本

文件大小

日期

时间

平台

Servicemonikersupport.dll

3.0.4506.4119

17,240

2009 年 06 月 01-

22:56

x86

System.runtime.serialization.dll

3.0.4506.4119

970,752

2009 年 06 月 01-

22:56

x86

System.servicemodel.dll

3.0.4506.4119

5,931,008

2009 年 06 月 01-

22:56

x86

文件信息对于所有基于 x64 版本的 Windows Server 2003 和 Windows XP 中的

文件名称

文件版本

文件大小

日期

时间

平台

Servicemonikersupport.dll

3.0.4506.4119

19,304

2009 年 06 月 01-

22:28

x64

System.runtime.serialization.dll

3.0.4506.4119

847,872

2009 年 06 月 01-

22:28

x64

System.servicemodel.dll

3.0.4506.4119

5,267,456

2009 年 06 月 01-

22:28

x64

对于所有基于 x86 版本的文件信息和 Windows Server 2008 SP2 的 Windows Vista SP2

文件名称

文件版本

文件大小

日期

时间

Servicemonikersupport.dll

3.0.4506.4120

17,240

10-Jun-2009

06:55

System.runtime.serialization.dll

3.0.4506.4120

970,752

10-Jun-2009

06:55

System.servicemodel.dll

3.0.4506.4120

5,935,104

10-Jun-2009

06:55

对于所有基于 x64 版本的文件信息和 Windows Server 2008 SP2 的 Windows Vista SP2

文件名称

文件版本

文件大小

日期

时间

平台

Servicemonikersupport.dll

3.0.4506.4120

19,288

10-Jun-2009

06:56

x64

System.runtime.serialization.dll

3.0.4506.4120

847,872

10-Jun-2009

06:56

x64

System.servicemodel.dll

3.0.4506.4120

5,271,552

10-Jun-2009

06:56

x64

对于基于 Itanium 的所有版本的 Windows Server 2008 SP2 文件信息

文件名称

文件版本

文件大小

日期

时间

平台

Servicemonikersupport.dll

3.0.4506.4120

33,640

10-Jun-2009

06:56

IA-64

System.runtime.serialization.dll

3.0.4506.4120

847,872

10-Jun-2009

06:56

IA-64

System.servicemodel.dll

3.0.4506.4120

5,271,552

10-Jun-2009

06:56

IA-64

状态

Microsoft 已经确认这是“适用于”一节中列出的 Microsoft 产品中的问题。

详细信息

使用下面的代码示例测试enableUnsecuredResponse属性︰

服务

BindingElementCollection serviceBec = new BindingElementCollection();
SecurityBindingElement serviceSbe = SecurityBindingElement.CreateUserNameForCertificateBindingElement();
serviceSbe.EnableUnsecuredResponse = true;
serviceBec.Add(serviceSbe);
serviceBec.Add(new TextMessageEncodingBindingElement());
serviceBec.Add(new HttpTransportBindingElement());
Binding serviceBinding = new CustomBinding(serviceBec);

ServiceHost serviceHost = new ServiceHost(typeof(RequestReply));

serviceHost.Open();

客户端

BindingElementCollection clientBec = new BindingElementCollection();
SecurityBindingElement clientSbe = SecurityBindingElement.CreateUserNameForCertificateBindingElement();
clientSbe.EnableUnsecuredResponse = true;
clientBec.Add(clientSbe);
clientBec.Add(new TextMessageEncodingBindingElement());
clientBec.Add(new HttpTransportBindingElement());
Binding clientBinding = new CustomBinding(clientBec);

IRequestReply channel = cf.CreateChannel();
try
{
channel.SendString("Hello");
cf.Close();
}

需要更多帮助?

需要更多选项?

了解订阅权益、浏览培训课程、了解如何保护设备等。

社区可帮助你提出和回答问题、提供反馈,并听取经验丰富专家的意见。

此信息是否有帮助?

你对语言质量的满意程度如何?
哪些因素影响了你的体验?
按“提交”即表示你的反馈将用于改进 Microsoft 产品和服务。 你的 IT 管理员将能够收集此数据。 隐私声明。

谢谢您的反馈!

×