Microsoft .NET Framework 3.0
注意 为了获得最佳结果,请在尚未安装有任何预发布版本的 .NET Framework 3.0 的计算机上安装。如果您的计算机上安装了预发布版本,则必须按正确顺序卸载它,以确保彻底卸载。在安装此工作版本之前,请遵照卸载说明来卸载预发布版本。有关具有预发布版本 Framework 的系统的其他信息,另请参考此页的 2.8 节。
目录
1. 安装 .NET Framework 3.0 的系统要求
2. .NET Framework 3.0:安装的已知问题
3. 下载错误的故障排除步骤
4. Windows Communication Foundation 的已知问题
5. Windows Workflow Foundation 的已知错误
6. Windows Presentation Foundation 的已知问题
1. 安装 .NET Framework 3.0 的系统要求
处理器 |
最小:
推荐:
|
操作系统 |
.NET Framework 3.0 可以安装在以下任何操作系统上:
*Windows Vista 附带有 .NET Framework 3.0。您不需要单独的安装包。Vista 上不支持独立的 .NET Framework 3.0 包。 |
RAM |
最小:
推荐:
|
硬盘 |
可能需要高达 500 MB 的可用空间。 |
CD 或 DVD 驱动器 |
不需要。 |
显示器 |
最小:
推荐:
|
鼠标 |
没有要求 |
安装驱动器
启动 .NET Framework 3.0 安装程序时,默认的安装位置是系统驱动器,即引导系统的驱动器。请确保您的系统驱动器上具有所需的空间量(最高 500 MB)。
2. .NET Framework 3.0:安装的已知问题
2.1 下载和安装 .NET Framework 3.0 时下载失败。
.NET Framework 3.0 的下载和安装中途失败。
解决此问题
从网站重新运行 dotnetfx3setup.exe,然后重试下载。有关下载错误的更多故障排除信息,请单击此处。
– 或 –
安装完整的可再发行组件包 dotnetfx3.exe (x86) 或 dotnetfx3_x64.exe (x64)。您可以在 .NET Framework 3.0 下载位置找到这些可再发行组件包。
2.2 如果安装程序需要重新启动,配置为清除 Temp 文件夹的防病毒应用程序将导致安装失败。
如果安装程序需要重新启动,并且防病毒应用程序设置为启动时清除 Temp 目录,则必要的安装文件将被删除,安装将失败,并报告“找不到程序”错误。
解决此问题
在运行 .NET Framework 3.0 安装程序之前,请将防病毒应用程序配置更改为启动或重新启动时不清除 Temp 文件夹。有关完成此配置更改的步骤,请参阅您的防病毒文档。
2.3 从“添加或删除程序”启动“维护模式”会占用几分钟时间,可能会使您以为安装失败。
如果在启动维护模式时有其他进程正在运行,如病毒扫描软件,这些进程会在很大程度上减慢安装速度,使您误以为安装失败。
解决此问题
请耐心等待。没有解决办法。安装没有失败。
2.4 没有用于卸载 Windows Workflow Foundation 的“添加或删除程序”条目。
安装 .NET Framework 3.0 时您可能看到“请卸载 Windows Workflow Foundation”错误消息,但实际上没有 Windows Workflow Foundation 的“添加或删除程序”条目使您能卸载该产品。
解决此问题
运行位于以下位置的卸载工具:http://www.microsoft.com/downloads/details.aspx?FamilyId=AAE7FC63-D405-4E13-909F-E85AA9E66146
安装 2.5 .NET Framework 3.0 可能会覆盖 MSXML6 的本地化版本
在 Windows XP SP2 和 Windows 2003 SP1 上,如果您以前安装了 MSXML6 的本地化版本,则安装 .NET Framework 3.0 将会用英语版本覆盖本地化的 MXSML6。
解决此问题
安装 .NET Framework 3.0 后,重新安装 MSXML6 的本地化版本。
2.6 在 Vista 上安装 .NET Framework 3.0 组件包时的安装错误
Windows Vista 附带有 .NET Framework 3.0。您不需要单独的安装包。Vista 上不支持独立的 .NET Framework 3.0 包。
2.7 从预发布版本的 .NET Framework 3.0(以前为 WinFX 3.0)升级时可能出现的问题
本节将说明您可能在以下过程中遇到的问题:如果您以前安装了预发布版本(CTP 和 Beta)的 .NET Framework 3.0 并且希望删除它以升级到 RTM 版本。
运行卸载工具
.NET Framework 3.0 卸载工具在以下网址提供:http://www.microsoft.com/downloads/details.aspx?FamilyId=AAE7FC63-D405-4E13-909F-E85AA9E66146。此工具可解决许多卸载问题,是您尝试解决卸载/重新安装问题时应该使用的最好的第一个步骤。有关该工具的正确用法的详细信息已经在下载页上列出。
如果您无法运行该工具或者该工具没有解决您的问题,请复查下面的“已知的问题和解决方法”一节,获得可能的解决方案。
注意:只有当您在安装 RTM 版本之前在系统上安装了早期预发布版本的 .NET Framework 3.0 时,才会出现这些安装问题。导致这些事件的问题已经在最近的 .NET Framework 3.0 预发布版本中解决。
已知的问题和解决方法
2.7.1 卸载时没有删除“Microsoft 数字标识服务”(idsvc)
卸载时,有些预发布版本的 .NET Framework 3.0 没有正确删除它们创建的所有服务。这些服务只要有一个在系统上存在,就会阻止安装 .NET Framework 3.0。安装将失败,并报告此错误:
ERROR_INSTALL_FAILURE 1603 安装期间出现严重错误
另外,%temp%"dd_wcf_retCA*.txt 日志文件之一将显示以下信息:
ServiceModelReg [15:48:08:041]: 安装: Microsoft 数字标识服务 (idsvc)
ServiceModelReg [15:48:08:073]: 错误: System.ComponentModel.Win32Exception: 名称已用作服务名或服务显示名
解决此问题
运行位于以下位置的卸载工具:http://www.microsoft.com/downloads/details.aspx?FamilyId=AAE7FC63-D405-4E13-909F-E85AA9E66146
如果问题仍然存在:
打开命令提示窗口。
- 单击“开始”。
- 单击“所有程序”。
- 单击“附件”。
- 单击“命令提示”。
- 在命令提示窗口,键入:
sc delete “InfoCard Service” - 重新启动计算机。
- 重新启动 .NET Framework 3.0 安装过程。
2.7.2 卸载某些预发布版本的 .NET Framework 3.0 时有些 WCF 性能计数器注册表项没有删除
某些预发布版本的 .NET Framework 3.0 在卸载时没有删除所有性能计数器注册表项。这些项的存在会阻止安装 .NET Framework 3.0。安装失败,并报告此错误:
“ERROR_INSTALL_FAILURE 1603 安装期间出现严重错误”
卸载后以下各项可能在注册表中仍然存在:
• HKEY_LOCAL_MACHINE"SYSTEM"CurrentControlSet"Services"MSDTC Bridge 3.0.0.0"Performance
• HKEY_LOCAL_MACHINE"SYSTEM"CurrentControlSet"Services"ServiceModelEndpoint 3.0.0.0"Performance
• HKEY_LOCAL_MACHINE"SYSTEM"CurrentControlSet"Services"ServiceModelOperation 3.0.0.0"Performance
• HKEY_LOCAL_MACHINE"SYSTEM"CurrentControlSet"Services"ServiceModelService 3.0.0.0"Performance
• HKEY_LOCAL_MACHINE"SYSTEM"CurrentControlSet"Services"SMSvcHost 3.0.0.0"Performance
解决此问题
运行位于以下位置的卸载工具:http://www.microsoft.com/downloads/details.aspx?FamilyId=AAE7FC63-D405-4E13-909F-E85AA9E66146
如果问题仍然存在:
1. 尝试重新启动。许多问题会导致性能计数器不稳定。重新引导会修复这类问题中的一些,并且比手动编辑注册表要安全。
2. 如果没有解决问题:
a. 检查以下注册表项。以下任何项如果为空或其值包含“Wbem*”,则删除其父注册表项:
• HKEY_LOCAL_MACHINE"SYSTEM"CurrentControlSet"Services"MSDTC Bridge 3.0.0.0"Performance
• HKEY_LOCAL_MACHINE"SYSTEM"CurrentControlSet"Services"ServiceModelEndpoint 3.0.0.0"Performance
• HKEY_LOCAL_MACHINE"SYSTEM"CurrentControlSet"Services"ServiceModelOperation 3.0.0.0"Performance
• HKEY_LOCAL_MACHINE"SYSTEM"CurrentControlSet"Services"ServiceModelService 3.0.0.0"Performance
• HKEY_LOCAL_MACHINE"SYSTEM"CurrentControlSet"Services"SMSvcHost 3.0.0.0"Performance
b. 例如,如果此项为空:
HKEY_LOCAL_MACHINE"SYSTEM"CurrentControlSet"Services"ServiceModelEndpoint 3.0.0.0"Performance
您应该删除:
HKEY_LOCAL_MACHINE"SYSTEM"CurrentControlSet"Services"ServiceModelEndpoint 3.0.0.0
2.7.3 引用“2.0.0.0”版本的 .NET Framework 3.0 程序集的旧的 machine.config 条目阻止安装
某些预发布版本的 .NET Framework 3.0 在卸载时没有删除全部的 machine.config 条目。任何在 machine.config 文件中引用 2.0.0.0 版“System.ServiceModel.dll”的条目将阻止安装 .NET Framework 3.0。安装失败,并报告此错误:
“ERROR_INSTALL_FAILURE 1603 安装期间出现严重错误”
此外:
1. 在应用程序事件日志中出现一个错误事件,它指出了运行 ServiceModelReg.exe 时出现的问题。
2. 位于用户的 %temp% 目录,名为“dd_wcf_retCA*”的安装日志文件包含一个条目,指示运行 ServiceModelReg.exe 时出现的问题。
3. 事件日志条目或安装日志条目可能包含一个类似以下内容的异常(时间戳将有所不同):
ServiceModelReg [16:21:10:656]: 错误: System.IO.FileLoadException: 无法加载文件或程序集 'System.ServiceModel, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089' 或其依赖项之一。定位的程序集的清单定义与程序集引用不匹配。(来自 HRESULT 的异常: 0x80131040)
解决此问题
手动删除旧的 machine.config 条目:
1. 在命令窗口中,运行“notepad %windir%"microsoft.net"framework"v2.0.50727"config"machine.config”
2. 删除引用 System.ServiceModel.dll 的任何 XML 节点和子节点。
3. 如果您使用的是 64 位计算机并且存在以下 config 文件:
“%windir%"Microsoft.NET"Framework64"v2.0.50727"config"machine.config”
请编辑该文件,以删除引用 System.ServiceModel.dll 的任何 XML 节点和子节点。
2.7.4 如果以前安装了 RC1 之前版本的 WCF,可能无法在 Web 上承载 WCF 服务
如果在已经安装了 IIS 的情况下安装了早期版本的 .NET Framework 3.0,当您升级到 RTM 版本的 .NET Framework 3.0 时,可能很难访问使用 .svc 文件通过 IIS 承载的 WCF 服务。在运行 Windows Server 2003 的计算机上,从浏览器访问 .svc 扩展可能会返回“404: 找不到网页”错误。在运行 Windows XP 的计算机上,.svc 内容可能显示为纯文本。
这是由于早期版本中的 WCF 脚本映射注册问题导致的。
解决此问题
有三种方法可以解决此问题:
1. 从 http://wcf.netfx3.com/files/folders/product_team/entry5648.aspx 下载不受 Microsoft 支持的第三方工具 CleanIISScriptMaps.exe。在命令控制台不带任何参数地运行该工具。
2. 卸载 IIS,然后重新安装它,或者重新创建您的网站:
a. 卸载 IIS,然后重新安装它,这样就可以刷新 IIS 元数据库了。然后手动运行 WCF 安装工具,以重新注册 WCF 脚本映射:
“%windir%"Microsoft.NET"Framework"v3.0"Windows Communication Foundation"ServiceModelReg.exe” /r /y
b. 如果您运行的是 Windows 2003 Server,可通过删除“默认网站”然后再重新创建它来解决这个问题。
3. 手动安装 .svc 作为临时解决方法:
a. 您可以运行以下命令来手动安装 .svc 映射。不过,这样做会更新现有站点的 IIS 元数据库。
"%windir%"Microsoft.NET"Framework"v3.0"Windows Communication Foundation"ServiceModelReg.exe" /s:W3SVC
2.7.5 IIS 元数据库损坏阻止安装 .NET Framework 3.0
如果在已经安装了 IIS 的情况下安装了早期版本的 .NET Framework 3.0,就有可能损坏 IIS 元数据库。这样会阻止安装 .NET Framework 3.0。
您可以通过以下方法确定此问题:
1. 安装失败,并报告此错误:
“ERROR_INSTALL_FAILURE 1603 安装期间出现错误”
2. 在应用程序事件日志中出现一个错误事件,它指出注册 WCF 脚本映射失败。该事件的来源是 System.ServiceModel.Install.dll 3.0.0.0。
3. %temp% 目录中的安装日志也将指示注册 WCF 脚本映射失败。
4. 事件日志或安装日志可能包含以下异常堆栈跟踪:
System.ApplicationException: ServiceModelReg.exe 检测到 IIS 元数据库中可能有损坏,这将阻止 ServiceModel IIS 脚本映射的注册。请修复 IIS 元数据库中的损坏,或者,如果您不需要 ServiceModel WebHost 功能,请禁用 IISAdmin 服务,然后重新注册 ServiceModel。
解决此问题
1. 卸载 IIS。
2. 重新安装 IIS。
3. 重新运行 .NET Framework 3.0 安装程序。
3. 下载错误的故障排除步骤
3.1 后台智能传输服务 (BITS) 已禁用
当 BITS 服务被禁用、不存在、已从服务应用程序删除、在下载过程中被停止时出现此错误,或者,BITS 依赖的任何服务失败或被删除时也会出现此错误。此问题的错误消息为“在开始安装过程之前,必须启用 BITS 服务。请启用 BITS 服务,然后重新运行安装程序。”
解决此问题
- 在“开始”菜单上单击“运行”。
- 在“运行”对话框中键入
services.msc
,然后单击“确定”。 - 在服务列表中,右键单击“后台智能传输服务”,然后单击“属性”。
注意:如果您在列表中没有看到“后台智能传输服务”,说明您的计算机上没有安装该服务。您可以从 http://www.microsoft.com/downloads/details.aspx?FamilyId=B93356B1-BA43-480F-983D-EB19368F9047&displaylang=en 下载 BITS 并进行安装。
- 在“启动类型”列表中,选择“手动”,然后单击“确定”。
如果这些步骤不能解决问题,您可能需要启用 BITS 依赖的服务。
启用依赖项
- 按照上面列出的步骤 1-3 进行操作。
- 在“后台智能传输服务属性”对话框中,单击“依赖项”选项卡。
- 对于在“此服务依赖以下系统组件”下列出的每个服务,按照上面列出的步骤 3 和 4 启用该服务。
3.2 配置错误
BITS 接口没有注册或注册设置损坏时会出现这些错误。
解决此问题
访问 http://www.microsoft.com/downloads/details.aspx?FamilyId=B93356B1-BA43-480F-983D-EB19368F9047&displaylang=en 以升级到 BITS 2.0。
– 或 –
在命令提示窗口运行 bitsadmin 工具,修复 BITS 服务:
Bitsadmin
/util /repairservice /force
您可以从 http://www.microsoft.com/downloads/details.aspx?amp;displaylang=en&familyid=49AE8576-9BB9-4126-9761-BA8011FABF38&displaylang=en 下载 Bitsadmin 工具。
3.3 网络错误
这些错误可能由于以下一个或多个原因而出现:
- 无法访问下载服务器
- 在服务器上找不到 URL
- 服务器超载
- 网关或代理出错
- 网络连接中断
- 代理不支持 HTTP 1.1
解决此问题
为代理服务器提供正确设置,确保计算机能够正确解析代理服务器。
– 或 –
升级到 BITS 2.0。您可以从
http://www.microsoft.com/downloads/details.aspx?amp;displaylang=en&familyid=49AE8576-9BB9-4126-9761-BA8011FABF38&displaylang=en 下载 BITS 2.0。
注意 要解决这些错误带来的问题,请退出安装程序,验证您已经连接到网络,然后再次启动安装程序。
3.4 磁盘错误
当 BITS 服务无法创建文件或写入文件时,会出现这些错误。另一个程序(如 chkdsk.exe)可能正在运行,并且可能锁定了磁盘,阻止 BITS 写入文件。
解决此问题
确保没有可能锁定磁盘的其他程序(如 chkdsk.exe)在运行,然后重试下载。
– 或 –
重新启动计算机,然后再次启动安装程序。确保已连接到 Internet。
3.5 代理错误
BITS 服务因为以下与代理相关的错误之一而失败:
- 代理设置无效。
- 代理服务器需要身份验证。
- 计算机无法解析代理服务器。
解决此问题
为代理服务器身份验证提供正确的凭据,然后再次重启安装程序。
– 或 –
升级代理服务器以支持 HTTP 1.1,并确保代理支持隐式凭据(如 NTLM)。您可能需要与网络管理员联系。
– 或 –
更改 Internet Explorer 代理设置,忽略代理。
要忽略代理服务器,请执行以下操作:
- 在 Internet Explorer 中,单击“工具”,然后单击“Internet 选项”。
- 单击“连接”选项卡,然后单击“局域网设置”。
- 在“代理服务器”下,取消选中“为 LAN 使用代理服务器(这些设置不会应用于拨号或 VPN 连接)”,然后单击“确定”。
- 再次单击“确定”。
如果设置代理服务器时需要进一步帮助,请与网络管理员联系。
3.6 其他错误
导致 BITS 服务不运行的情况:
- 在安全引导模式下。
- 在 Windows 2000 上,使用远程桌面连接。
- 安装程序由“run as”命令安装。
解决此问题
没有解决办法。系统不支持这些情况。
4. Windows Communication Foundation (WCF) 的已知问题
4.1 在 Windows XP 和 Windows Server 2003 上需要 Windows 修补程序才能使用 WS-AtomicTransaction 和 COM+ 集成功能
WCF WS-AtomicTransaction 支持和 COM+ 集成功能需要 Windows 修补程序 (QFE) 才能在 Windows XP 和 Windows Server 2003 上正常工作。您可以从 http://go.microsoft.com/fwlink/?linkid=46976 安装修补程序包。
4.2 使用 SvcUtil.exe 工具生成的托管 C++ 代码可能无法编译
您可以使用 SvcUtil.exe 工具为 Web 服务代理和来自元数据的数据类型生成代码。不过,Visual Studio 2005 和 .NET Framework 2.0 SDK 中的 C++ 代码提供程序仍然存在已知问题,导致该工具生成可能无法编译的托管 C++ 代码。C++ 代码提供程序的这些问题将在今后发布的 Visual Studio 2005 中得到解决。
4.3 SvcUtil.exe 中的代码生成语言支持
SvcUtil.exe 可以用具有托管代码提供程序的任何语言为 Web 服务代理和来自元数据的数据类型生成代码。SvcUtil 已经过 C#、VB 和 C++ 托管代码提供程序的测试。其他代码提供程序尚未经过测试,可能生成不编译或在其他方面不可使用的代码。
4.4 当 QueueTransferProtocol 设置为“Srmp”或“SecureSrmp”时,将消息发送到 Web 托管的排队服务失败
Web 托管的服务使用的队列在其名称中包含“.SVC”以将它们映射到适当的 WCF 服务。如果在安装 MSMQ HTTP 支持功能之前安装 WCF 激活功能,则 MSMQ HTTP 安装问题会导致 .SVC 处理程序映射被复制到 MSMQ vdir。因此,将 SRMP 消息发送到这样的队列会失败。
有两种方法可以解决此问题:
1. 在安装 WCF 激活功能之前安装 MSMQ HTTP 支持。
或:
1. 使用 IIS 管理控制台从 MSMQ vdir 删除 .SVC 处理程序映射。
2. 然后使用以下命令更新站点的 .SVC 映射:
“%windir%"Microsoft.NET"Framework"v3.0"Windows Communication Foundation"SMConfigInstaller.exe” /c:install /f:http.
注意:在 64 位计算机上使用 Framework64 路径。
4.5 排队通道不产生完全端到端跟踪
当前没有在 MSMQ 和 WCF 排队通道之间跟踪消息的端到端支持。这是已知问题。
要解决此问题,请使用 MSMQ 消息 ID 手动关联在 WCF 和 MSMQ 中跟踪的消息。此 ID 在 WCF 和 MSMQ 中进行跟踪。
4.6 将 WMI 用于 NetMsmqBinding 和 MsmqIntegrationBinding 时的已知问题
使用 WMI 检查 MsmqTransportBindingElement 和 MsmqIntegrationBindingElement 的属性时,ReceiveErrorHandling 和 QueueTransferProtocol 的枚举值显示为数字,而不是真实的值。这是已知问题。要解决该问题,请检查为绑定设置的实际值的配置。
使用 WMI 检查 MsmqTransportBindingElement 时,MsmqTransportSecurity 和 TransactedReceiveEnabled 属性缺失。这是已知问题。
使用 WMI 检查 MsmqIntegrationTransportBindingElement 时,MsmqTransportSecurity、TargetSerializationTypes 和 TransactedReceiveEnabled 属性缺失。这是已知问题。
4.7 在 Windows Vista 上消息丢失错误被记录为拒绝消息
在 MSMQ v4 (Windows Vista) 上通过 WCF 排队通道使用 NetMsmqBinding 或 MsmqIntegrationBinding 时,丢失的消息跟踪在日志中被不正确地记录为拒绝的消息。这是已知问题。
4.8 将阿拉伯语言证书用于客户端身份验证时,Windows 事件查看器不正确地显示客户端标识
在阿拉伯 Windows 客户端上将本地计算机证书 [CN=4B4DG4,] 用于客户端身份验证时,Windows 事件查看器的已知问题导致客户端标识在事件日志审核条目中的显示不正确:
ClientIdentity: CN=4B4DG4; 14FDBABD77EA825C391CEC4F830859F72B56009F
在上述示例中,字符串“14”是证书指纹的一部分,但显示在证书主题名称之前。
4.9 IIS 元数据库损坏可能阻止安装 .NET Framework 3.0
如果在已经安装了 IIS 的情况下安装了早期版本的 .NET Framework 3.0,则 IIS 元数据库的损坏可能会阻止安装 .NET Framework 3.0。
您可以通过以下方法确定此问题:
1. 安装失败,并报告此错误:
“ERROR_INSTALL_FAILURE 1603 安装期间出现错误”
2. 在应用程序事件日志中出现一个错误事件,它指出注册 WCF 脚本映射失败。该事件的来源是 System.ServiceModel.Install.dll 3.0.0.0。
3. %temp% 目录中的安装日志也将包含注册 WCF 脚本映射失败的消息
4. 事件日志或安装日志可能包含以下错误消息:
System.ApplicationException: ServiceModelReg.exe 已检测到 IIS 元数据库中可能有损坏,这将阻止 ServiceModel IIS 脚本映射的注册。请修复 IIS 元数据库中的损坏,或者,如果您不需要 ServiceModel WebHost 功能,请禁用 IISAdmin 服务,然后重新注册 ServiceModel。
要解决此问题,请执行以下操作:
1. 卸载 IIS。
2. 重新安装 IIS。
3. 重新运行 .NET Framework 3.0 安装程序。
4.10 在同一个端口上运行 TCP 服务和 TCP MEX 时出现异常
启用端口共享时,将 TCP 服务 TCP MEX 端点配置为使用同一个端口会导致启动服务时出现 AddressAlreadyInUse 异常。
有两种方法可以解决此问题:
1. 将 TCP 服务和 TCP MEX 端点的配置更改为使用不同的端口。
2. 为 TCP MEX 端点的 TcpTransportBindingElement 启用端口共享。以下代码解释了此过程:
ServiceMetadataBehavior mexBehavior = new ServiceMetadataBehavior();
host.Description.Behaviors.Add(mexBehavior);
Binding mexBinding = MetadataExchangeBindings.CreateMexTcpBinding();
CustomBinding mexBinding2 = new CustomBinding(mexBinding);
mexBinding2.Elements.Find<TcpTransportBindingElement>().PortSharingEnabled = true;
host.AddServiceEndpoint(typeof(IMetadataExchange), mexBinding2, mexAddress);
4.11 错误消息 > 64 KB 可导致 ProtocolException
当 MaxBufferSize 至少为 Int.MaxValue – 1024 字节(2147482623 字节)时,发送大于 64 KB 的错误消息会导致客户端收到 ProtocolException,而不是 FaultException。对于缓存的传输,MaxBufferSize 与 MaxReceivedMessageSize 相同。这只影响使用 HTTP(S) 传输的服务。
要解决此问题,请将 MaxBufferSize (MaxReceivedMessageSize) 设置为 Int.MaxValue – 1025 字节(2147482622 字节)或更小。也可以直接将 HttpWebRequest.DefaultMaximumErrorResponseLength 设置为所需的限制。设置 DefaultMaximumErrorResponseLength 将影响同一应用程序域中的所有通道。
4.12 无法对同一协定使用 EncryptBeforeSign 和 XmlSerializerFormatAttribute
如果对协定使用 XmlSerializerFormatAttribute,则 EncryptBeforeSign 保护命令的消息安全性不能正常工作。如果同时使用二者,WCF 将在解密后使用无效正文内容创建消息 — 在第一个正文元素之前生成额外的 <?xml ..> 处理指令。
要避免此问题,请不要对同一协定同时使用 EncryptBeforeSign 和 XmlSerializerFormatAttribute。
4.13 无法承载使用不同版本的 WS-Addressing 的 WS-ReliableMessaging 通道
AppDomain 无法承载使用不同版本的 WS-Addressing 的 WS-ReliableMessaging 通道。在这种情况下,第一个活动通道将为所有随后的协议消息指定 WS-Addressing Action 标头的版本,即使这些消息是由被配置为使用不同版本的寻址协议的通道发送的。
如果您需要单个应用程序或服务来创建使用不同 WS-Addressing 版本的 WS-ReliableMessaging 通道,请为每个通道单独使用 AppDomain。当 WCF 服务为 Web 承载服务时,您需要使用两个虚拟目录,一个通过 WS-Addressing 1.0 端点承载服务,一个通过 WS-Addressing 2004 年 8 月版端点承载。
5. Windows Workflow Foundation 的已知问题
5.1 在 Information Services (IIS) 7.0 集成模式下承载的 Workflow Web 服务
工作流项目系统生成的 web.config 文件与 IIS 6.0 承载兼容。不过,随 Windows Vista 附带的 IIS 7.0 在两种模式下支持 ASP.NET 管线的扩展:ISAPI 模式(IIS 6.0 兼容模式)和集成模式。要充分利用新的集成模式功能,web.config 文件必须按如下所示进行修改:
|
<system.webServer>
<modules>
<add name="WorkflowHost" type="System.Workflow.Runtime.Hosting.WorkflowWebHostingModule, System.Workflow.Runtime, Version=3.0.00000.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" preCondition="runtimeVersionv2.0" />
</modules>
</system.webServer>
|
5.2 ExternalDataExchangeService 不应该跨多个工作流运行库实例使用
您不能将 ExternalDataExchangeService 服务添加到多个 WorkflowRuntime 实例。无论何时,只要创建新的 WorkflowRuntime 实例,就应该创建一个新的 ExternalDataExchangeService 服务,并且应该将任何本地通信服务再次添加到 ExternalDataExchangeService 服务。
5.3 作为事件处理程序添加的静态方法没有正确序列化
当您将静态方法作为事件处理程序添加时,它会序列化为 this.Method 而不是 ClassName.Method。
5.4 CompensateActivity 的 TargetActivityName 为自定义复合活动时,补偿失败
如果您创建了一个自定义复合活动,它包含实现 ICompensatable 和 CompensateActivity 活动的子活动,用于补偿复合活动,但不是显式地补偿子活动,那么当自定义活动被放在工作流中时,补偿将失败并出现异常。
要避免此问题,您应该将自定义活动的所有子活动封装在 CompensatableSequenceActivity 活动中,并对 CompensatableSequenceActivity 活动实现补偿。
6. Windows Presentation Foundation 的已知问题
6.1 用于具有多个项目和项目依赖项的解决方案的 Windows Presentation Foundation 生成系统的已知问题
如果解决方案有多个项目,则项目目录需要相互对等。如果您更改项目结构,使一个项目的根在另一个项目的目录下,那么在重新生成期间可能看到异常标记编译错误,提示您找不到所引用的 DLL 中的类型(来自依赖项目之一)。
解决方法是:
- 为解决方案中的项目更改目录层次结构,使各个项目目录相互对等,或者,
- 当面临此问题时:清除、然后生成或重新生成。