WCF 与 3.5 和 4.0 一起使用

Posted

技术标签:

【中文标题】WCF 与 3.5 和 4.0 一起使用【英文标题】:WCF with 3.5 and 4.0 together 【发布时间】:2011-02-10 03:38:11 【问题描述】:

安装 .net 4 后,是否有人设法在 IIS7 上以 2.0 集成模式成功运行 wcf?

我发现安装 .net 4 删除了 svc 的 2.0 处理程序并用 .net 4 版本替换它们(这导致我的 v3.5 站点出现 404.17 错误),我设法通过运行让我的 3.5 站点再次运行ServiceModelReg.exe /i 来自 v3.0 文件夹 (Windows Commuication Foundation) 但删除了 4.0 映射,因此它们似乎是互斥的?

关于如何在同一台 IIS7 服务器上运行 4.0 和 3.5 WCF 站点的任何建议?

编辑 由于 .net 4、经典和集成 2.0 和 4.0,那里有 4 个应用程序池。该站点仍在使用集成的 2.0 应用程序池。事实是 svc 映射指向 4.0 isapi dll,我将 2.0 添加回来(修改了 web.config 以提供本地映射)但没有效果。

【问题讨论】:

【参考方案1】:

我不想回答我自己的问题,但是..

我运行了 ServiceModelReg.exe (here) 来修复之前的安装,这给我留下了我期望的 svc 映射(指向 v2.0 和 v4.0 isapimodule)。不确定这只是我安装的 4.0 的问题,还是在 3.5 之后安装 4.0 的一般问题。

【讨论】:

【参考方案2】:

我在新的 Win2008 R2 测试机上遇到 404.17 错误。

我在blog post 找到的解决方案运行良好,即在“.NET Framework 3.5.1 功能”中启用 WCF 激活功能

【讨论】:

【参考方案3】:

我没有测试过这种情况。但我认为,如果 Microsoft 设计功能的实现中不存在错误,则以下内容应该有效:

对于每个网站,您都可以选择应用程序池(在 IIS 管理器中虚拟目录配置的“高级设置”中)。 .NET 4.0 安装后存在一些默认应用程序池:“ASP.NET v4.0”、“ASP.NET v4.0 Classic”、“Classic .NET AppPool”和“DefaultAppPool”。您还可以创建更多应用程序池。对于每个池,您可以选择使用 4.0 还是 3.5 (v2.0.50727) .NET 版本。

我希望你能解决你的问题。

最好的问候

【讨论】:

@oleg 感谢您的回复,我进行了编辑以提供有关正在使用的应用程序池的更多信息

以上是关于WCF 与 3.5 和 4.0 一起使用的主要内容,如果未能解决你的问题,请参考以下文章

我可以将 Windows Identity Foundation 3.5 与 .NET 4.5 一起使用吗?

Jquery Rest 与 WCF 3.5 的通信

在 WCF 和 .NET 4.0 中使用 TLS 1.1 或 1.2?

您需要同时安装 .net 3.5 和 4.0 还是只需要 .net 4?

CFree编译器发展与3.5/4.0版本下载

将代码从 .net 4.0 回滚到 .net 3.5,现在动态不起作用