3

当社の 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 開発サーバーで動作しているため、アクセス許可の問題ではないかと考えています。

4

1 に答える 1

4

アプリケーション プール IDには、一時ディレクトリ(C:\Windows\TEMP)への書き込みアクセスが必要です。

于 2013-11-12T12:28:05.487 に答える