无法在ASP.Net中以编程方式编译.csproj

无法在ASP.Net中以编程方式编译.csproj,asp.net,silverlight,msbuild,Asp.net,Silverlight,Msbuild,我正在创建一个web应用程序。在其中,我喜欢使用MSBuild.exe动态编译VS项目。这在本地机器上运行时效果非常好。但当我在IIS中配置时,相同的实现不起作用。我怀疑IIS可能会限制某些权限。但不清楚 我编译时遇到的错误是 CSC:错误CS1504:无法打开源文件“c:\Windows\Temp\Silverlight,Version=v4.0.AssemblyAttributes.cs”(“访问被拒绝”) 注意:我正在编译一个Silverlight项目。上面的错误也是进程的标准输出,它以代

我正在创建一个web应用程序。在其中,我喜欢使用MSBuild.exe动态编译VS项目。这在本地机器上运行时效果非常好。但当我在IIS中配置时,相同的实现不起作用。我怀疑IIS可能会限制某些权限。但不清楚

我编译时遇到的错误是

CSC:错误CS1504:无法打开源文件“c:\Windows\Temp\Silverlight,Version=v4.0.AssemblyAttributes.cs”(“访问被拒绝”)

注意:我正在编译一个Silverlight项目。上面的错误也是进程的标准输出,它以代码1退出

代码编译项目

 ProcessStartInfo startInfo = new ProcessStartInfo();
 startInfo.FileName = MSBuildPath;
 startInfo.UseShellExecute = false;
 startInfo.CreateNoWindow = true;
 startInfo.WindowStyle = ProcessWindowStyle.Hidden;
 startInfo.RedirectStandardOutput = true;
 startInfo.Arguments = "\"" + file.FullName + "\"" + " /t:Rebuild /p:Configuration=Release";
 this.process = Process.Start(startInfo);
有解决方案吗?

在临时文件夹中创建“Silverlight,Version=v4.0.AssemblyAttributes.cs”文件,由于系统帐户(以及配置错误的用户帐户)在c:\windows\TEMP中有临时文件夹,因此它们必须共享相同的文件名。这是一个问题,因为由一个帐户创建的文件将不具有对不同帐户的权限

请尝试以下操作:
1.创建用户帐户并将应用程序池标识配置为该用户帐户。
2.将应用程序池属性“加载用户配置文件”设置为true

这将确保应用程序池获得自己的临时目录,并且不会与任何其他帐户共享状态。

在临时文件夹中创建“Silverlight,Version=v4.0.AssemblyAttributes.cs”文件,并且由于系统帐户(以及配置错误的用户帐户)在c:\windows\TEMP中有临时文件夹,因此它们必须共享相同的文件名。这是一个问题,因为由一个帐户创建的文件将不具有对不同帐户的权限

请尝试以下操作:
1.创建用户帐户并将应用程序池标识配置为该用户帐户。
2.将应用程序池属性“加载用户配置文件”设置为true


这将确保您的应用程序池获得自己的临时目录,并且不会与任何其他帐户共享状态。

您的应用程序池帐户(可能是您默认的IIS用户帐户)是否具有读取c:\Windows\TEMP文件夹的权限?是的,我这样做了,如本文所述,您的应用程序池帐户(可能是您默认的IIS用户帐户)有权读取c:\Windows\Temp文件夹吗?是的,我按照这里的说明进行了操作,