当社の Web サイトは、構成に応じてデータベースからロードされたカスタム C# コードをコンパイルします。開発者用マシンの 1 つで、コンパイル時にファイルが見つからないというエラーが発生します。このコードは、他の開発者のマシンでも問題なく動作します。また、開発者のマシンの Visual Studio 開発サーバーで実行すると、正常に動作します。この特定のマシンの IIS で実行すると機能しません。Web サイトが既定の Web サイトのサブ ディレクトリにインストールされていたときは以前は機能していましたが、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
IIS ではなく Visual Studio 開発サーバーで動作しているため、アクセス許可の問題ではないかと考えています。