如果您在 IIS 6 Windows Server 上运行新的 .NET 4 框架,则会出现一些问题。IIS 6 不允许您同时在同一实例中运行多个框架,例如 IIS7,它可以创建针对不同框架的应用程序池。当 IIS 6 在 ASP.NET 2.0(3.0 和 3.5 是超集,而不是框架)下运行时,如果应用程序是 4.0,您将遇到此错误 配置错误描述:在处理服务此请求所需的配置文件期间发生错误. 请查看下面的具体错误详细信息并适当地修改您的配置文件。解析器错误消息:无法识别的属性“targetFramework”。请注意,属性名称区分大小写。
Source Error:
Line 11: </configSections>
Line 12: <system.web>
Line 13: <compilation debug="true" targetFramework="4.0">
Line 14: </compilation>
Line 15: <pages controlRenderingCompatibilityVersion="3.5" clientIDMode="AutoID"/> </ system.web>
你有几个选择;
- 将 .NET 应用程序降级到 3.5,Visual Studio 2010 使它变得非常容易。只需转到网站属性 -> 应用程序选项卡,然后有一个包含所有框架版本的下拉列表,选择 3.5,您 VS2010 将重新加载项目并修改 web.config,如果您添加了 Web 服务引用,您可能需要删除它们并在 3.5 下重新添加它们
配置 IIS6 和 web 配置来解决问题。我处理第二部分:
在 IIS 6 控制台中,您需要右键单击您的项目并单击属性并检查 ASP.Net 选项卡是否选择了 Framework 4。如果没有选择框架 4。
但是由于应用程序池,您仍然可能面临同样的错误;对于两个不同的框架 Web 应用程序,您可能拥有相同的应用程序池。IIS 6 不允许您在同一实例中同时运行多个框架(意味着单个应用程序池不能用于两个不同的框架),例如 IIS7,它可以创建针对不同框架的应用程序池。
- 要解决此问题,您需要创建应用程序池并将此应用程序池分配给您的框架 4 Web 应用程序。要分配应用程序池,请在 IIS 控制台中打开 Web 应用程序的属性部分,然后单击“主目录”选项卡并从下拉列表中选择您之前创建的应用程序池。
- 这两个现在可能会在某个时候完全解决您的问题。您可能会收到“404 Page is not found”错误。尽管您现在在开发期间可能会遇到任何问题。
- 基本上找不到页面问题是由 IIS6 设置隐藏的其他问题的原因。但是你需要看到真正的原因。您在这里要做的是转到 IIS6 控制台打开“Web 服务扩展节点”,它位于“默认网站”节点的正下方。您将在那里看到整个 ASP.Net 框架列表,默认情况下这些框架可能被禁止,因此请选择 ASP.Net Framework 4 并单击允许按钮。现在浏览您的网站,除了“404 页面未找到”之外,您还会收到其他错误。您可能会收到如下所示的错误:
- 提供程序选项中“compilerVersion”属性的值必须为“v4.0”浏览网站时会看到以下错误提供程序选项中“compilerVersion”属性的值必须为“v4.0”或更高版本如果您正在为 .NET Framework 4.0 或更高版本进行编译。要为 .NET Framework 3.5 或更早版本编译此 Web 应用程序,请从 Web.config 文件的元素中删除“targetFramework”属性。要解决此问题,您需要修改您的 Web 配置文件,如下所示:
以前 CompilerVersion 值设置为 v3.5,但我们已经将 targetFranework 更改为 4。因此,根据上面的错误消息,提供程序选项中的“compilerVersion”属性必须是“v4.0”或更高版本,如果您正在编译版本.NET Framework 4.0 或更高版本。
Hence your new setting will be as below:
<providerOption name="CompilerVersion" value="v3.5"/>
希望这将解决您在 IIS6 上的 ASP.Net 4 迁移和托管问题。