IIS Compilation Error -2146232576 AspNetInitializationExceptionModule

血红的双手。 提交于 2019-11-27 20:06:06

Error:

Compilation Error

Description: An error occurred during the compilation of a resource required to service this request. Please review the following specific error details and modify your source code appropriately.

Compiler Error Message: The compiler failed with error code -2146232576.

Solution:

I faced with this problem after upgrade some NuGets and solved with below steps.

Step 1: Remove these NuGet packages from NuGet Package Console

PM> Uninstall-package Microsoft.CodeDom.Providers.DotNetCompilerPlatform
PM> Uninstall-package Microsoft.Net.Compilers

Step 2: Add these system.codedom lines before closing </system.data> tag in Web.config

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

PS: After a while, we removed <system.codedom> completely, for fixed other errors.

The culprit is the Microsoft.Net.Compilers package, used to support modern C# syntax/features (version 6.0, 7.0) in your project and in Razor views in particular. Depending on its version, the package requires a particular minimum version of the full .NET framework to be installed on a machine in question.

For instance, the 2.2.0 package requires .NET 4.6+. Even though your project is targeting say .NET 4.5.2, you probably have the latest .NET installed on your development machine, and everything goes just fine. The remote deployment machine only has .NET 4.5.2 installed, and when your ASP.NET application tries to compile resource (e.g. views) at run time, you get error -2146232576.

Your options:

  1. If you absolutely need to use newish C# features in your project - install the latest .NET framework onto the remote machine.

  2. If you are happy with only more or less modern C# features being available - downgrade the Microsoft.Net.Compilers package to a version that only requires a framework you have on your remote machine. For instance, version 1.3.2 only needs .NET 4.5.

  3. If you do not need the said features at all, simply remove Microsoft.Net.Compilers and Microsoft.CodeDom.Providers.DotNetCompilerPlatform (Roslyn CodeDom providers) packages from your project.

Target framework was changed, had to install .NET 4.6 on the Windows Server.

for me helped just remove NuGet packages above:

Microsoft.CodeDom.Providers.DotNetCompilerPlatform

Microsoft.Net.Compilers

Recompile and then add them back.

For me, it was because i tried to build a string for the Roles property of the attribute Authorize on my class.

[Authorize(Roles = IdentityRoles.Administrator + "," + IdentityRoles.BaseData)]

I had to build the different strings and just set one constant to Roles:

[Authorize(Roles = IdentityRoles.AutorizationStrings.AdminBaseData)]

where

IdentityRoles.AutorizationStrings.AdminBaseData = "Administrator,Base data";

Hope this helps anybody that tricks themself down this hole.

I upgraded the .NET framework to version 4.6 and it worked. The Roslyn packages are dependent on versions 4.5+, but it didn't work. So the upgrade made it work.

I upgraded the NuGet package "Microsoft.CodeDom.Providers.DotNetCompilerPlatform" from 2.0.0 to 2.0.1 and that resolve this issue for me

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!