C# 在IIS下找不到CSharpCodeProvider CompileAssemblyFromSource文件

C# 在IIS下找不到CSharpCodeProvider CompileAssemblyFromSource文件,c#,asp.net,iis,dynamic,compilation,C#,Asp.net,Iis,Dynamic,Compilation,我们的网站根据配置编译从数据库加载的自定义c#代码。在我们的一台开发人员机器上,我们在编译时遇到一个“未找到文件”错误。此代码在其他开发人员机器上运行良好。在开发人员计算机上的VisualStudio开发服务器下运行时,它也可以正常工作。在此特定计算机上在IIS下运行时,它不起作用。以前,当网站安装在默认网站的子目录下时,它可以工作,但自从移动到IIS中的单独网站后,它就不工作了 CompilerResults results = compiler.CompileAssemblyFromSour

我们的网站根据配置编译从数据库加载的自定义c#代码。在我们的一台开发人员机器上,我们在编译时遇到一个“未找到文件”错误。此代码在其他开发人员机器上运行良好。在开发人员计算机上的VisualStudio开发服务器下运行时,它也可以正常工作。在此特定计算机上在IIS下运行时,它不起作用。以前,当网站安装在默认网站的子目录下时,它可以工作,但自从移动到IIS中的单独网站后,它就不工作了

CompilerResults results = compiler.CompileAssemblyFromSource(
                              compilerParameters, source);

if (results != null && results.Errors.HasErrors)
{
    StringBuilder stringBuilder = new StringBuilder();
    foreach (CompilerError error in results.Errors)
    {
        stringBuilder.AppendLine(error.ErrorText);
    }

    throw new StoreTechException(
        String.Format("Unable to generate KPI calculation assembly:{0}{1}",
            Environment.NewLine, stringBuilder.ToString()), 
        StoreTechExceptionTypes.Error);
}

return results;
生成的错误消息包括:

CS2001: Source file 'C:\\Windows\\TEMP\\zyxl54ci.0.cs' could not be found 
CS2008: No inputs specified

由于它在Visual Studio开发服务器下工作,而不是在IIS下工作,我们想知道这是否是一个权限问题。

应用程序池标识需要临时目录(C:\Windows\temp)进行写访问。

什么版本的Windows/IIS?您站点的池帐户以什么身份运行?@Kev Windows 7 Professional。IIS 7.5。我需要等到星期二才能肯定地回答第二个问题,下次我什么时候见开发人员。除了将应用程序池设置为.NET 4.0之外,我不知道应用程序池做了什么不寻常的事情,所以它可能是默认值。我收到了相同的错误消息。在我的例子中,应用程序池标识没有足够的权限。@lippo启用代码编译需要哪些特定权限?我选择了一种简单的方法。我已将应用程序池用户添加到管理员组。但我认为用户只需要对temp dir拥有写权限。