如何修复相互导致的配置错误“无法找到 CodeDom 提供程序类型”和解析错误“无法加载类型”?

问题描述 投票:0回答:7

我目前正在开发一个项目,其中包括 ASP.net、JS、C#、Html 等。我的项目运行良好,加载任何内容都没有问题,使用 IIS Express (10.0) 运行也没有任何问题。我添加了更多的类并编辑了一个 Web 表单,当我尝试运行代码以检查我的工作时,我在“/”应用程序中遇到了“服务器错误”。抛出配置错误。

描述:处理服务此请求所需的配置文件期间发生错误。请查看下面的具体错误详细信息并适当修改您的配置文件。 解析器错误消息:CodeDom 提供程序类型 “Microsoft.CodeDom.Providers.DotNetCompilerPlatform.CSharpCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform,版本=2.0.1.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" 不能 位于。

来源错误:

Line 31: <system.codedom>
Line 32: <compilers>
Line 33: <compiler language="c#;cs;csharp" extension=".cs"
Line 34: type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.CSharpCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=2.0.1.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"
Line 35: warningLevel="4" compilerOptions="/langversion:default /nowarn:1659;1699;1701"/>

源文件:C:\Users\Dell\Desktop\School\WebProject\Project\web.config 行:33

版本信息:Microsoft .NET Framework 版本:4.0.30319; ASP.NET版本:4.8.4075.0

当我尝试寻找解决方案时,我找到了一些解决方案,但它们都导致我出现“解析器错误”,“无法加载类型”。

描述:解析资源时发生错误 需要满足此请求。具体请查看以下内容 解析错误详细信息并适当修改您的源文件。

解析器错误消息:无法加载类型“Project.Global”。

来源错误:

Line 1:  <%@ Application Codebehind="Global.asax.cs" Inherits="Project.Global" Language="C#" %>

源文件:/global.asax 行:1

版本信息:Microsoft .NET Framework 版本:4.0.30319; ASP.NET版本:4.8.4075.0

无论我尝试使用什么方法或方法来解决这些问题,我似乎总是回到第二个...... 有人可以帮忙吗?

c# asp.net visual-studio iis-express global-asax
7个回答
11
投票

这可能是因为你有

<system.codedom>
    <compilers>
        <compiler language="c#;cs;csharp" extension=".cs" type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.CSharpCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=2.0.1.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" warningLevel="4" compilerOptions="/langversion:6 /nowarn:1659;1699;1701" />
        <compiler language="vb;vbs;visualbasic;vbscript" extension=".vb" type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.VBCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=2.0.1.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" warningLevel="4" compilerOptions="/langversion:14 /nowarn:41008 /define:_MYTYPE=\&quot;Web\&quot; /optionInfer+" />
    </compilers>
</system.codedom>

在您的 Web.config 文件中,但项目中未安装 Microsoft.CodeDom.Providers.DotNetCompilerPlatform 包。检查您的项目包引用以查看该包是否已安装。如果不是,请转到 Nuget Package Manager 并安装 Microsoft.CodeDom.Providers.DotNetCompilerPlatform。


4
投票

确保

/bin
文件夹不为空。它应该包含构建后的所有
.dll
文件


4
投票

我将项目属性“构建”->“输出路径”设置为 bin\Debug。在清理和重建解决方案时,DLL 被复制到此文件夹中,但我仍然收到此错误。将输出路径更改为 bin\ 并重建解决方案后,它可以在本地主机上运行。然后我更改了属性,将构建输出路径设置回 in\Debug\ 并重新构建了解决方案,它工作正常。


1
投票

这可能是我特有的,但我添加了一个位于主应用程序文件夹下的文件夹中的网络服务。我必须进入 IIS 并为此文件夹创建一个虚拟应用程序。我认为这会导致 IIS 忽略此文件夹“上方”的 web.config 文件并使用此“应用程序”的 web.config 文件。 也许这会对像我一样正在寻找的人有所帮助。就我而言,我有另一个结构相同的网络服务,但我无法弄清楚为什么一个可以工作而另一个却不能。


0
投票

如果您还有这样的问题

  1. NETStandard.Library
    nuget 添加到您的项目中。
  2. 将以下行添加到您的
    web.config
<system.web>
    <compilation debug="true" targetFramework="4.8">
      <assemblies>
        <!-- ADD THIS LINE BELLOW -->
        <add assembly="netstandard, Version=2.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51" />
      </assemblies>
    </compilation>

0
投票

该错误意味着您没有该项目所需的所有

dll
文件。

就我而言,我只是将 bin 文件夹上传到我的托管目录,因为它没有上传,所以我手动上传 bin 文件夹并且它有效。马


0
投票

确保您在 IIS 基本设置中指向应用程序的正确路径

© www.soinside.com 2019 - 2024. All rights reserved.