记录一个IIS的服务器错误问题的解决方案

部署一个mvc项目到iis的时候提示有下面这样的错误,

记录一个IIS的服务器错误问题的解决方案

看提示是Microsoft.CodeDom.Providers.DotNetCompilerPlatform,权限问题。

我是第一次遇到,所以只能搜索,显示在中文网站上搜索,发现基本上都是垃圾信息,很多人不验证一下就直接把别人的总结转载了,看似有很多信息,其实最后归源都是一个人写的。

用英文搜索,在stackoverflow(神网站)上看到一篇问答的,提问者遇到的问题和我是类似的。

[https://stackoverflow.com/questions/33319675/the-codedom-provider-type-microsoft-codedom-providers-dotnetcompilerplatform-cs](https://stackoverflow.com/questions/33319675/the-codedom-provider-type-microsoft-codedom-providers-dotnetcompilerplatform-cs]

第一名的答案大致意思就是这是mvc模版默认引入nuget的roslyn库造成的,所以去除掉相关的引用就可以了,我试了一下,确实就可以运行了。

但是这个解决方案总感觉不对劲,不是再从根本上解决问题,而是在回避问题。 微软默认引入roslyn的库说明这是是可以用的,现在不能用从提示上看是权限问题,那就应该是权限问题了。

继续搜索,看到了这篇文章

https://blogs.msdn.microsoft.com/webdev/2014/05/12/enabling-the-net-compiler-platform-roslyn-in-asp-net-applications/

介绍的是roslyn编译器在asp.net中的应用。

回过头去看stackoverflow的那个回答,发现底下有个低赞的回答提到了要添加IIS_IUSRS,我尝试了一下,果然OK了,看来就是权限问题了。

顺便研究了一下IIS权限,即对对应文件夹的权限。

有两个权限比较重要,匿名用户IUSR和和用户组IIS_IUSRS,

其中IUSR认证的时候不需要密码,匿名;

而IIS_IUSRS能够让AppPool拥有访问系统资源的足够权限,所有在这个用户组里的用户都可以。

https://www.cnblogs.com/wangqiideal/articles/4717286.html