2009-11-11 29 views
5

私は分散ネットワークにプッシュしようとしているC#アプリケーションを持っています。アプリケーションはローカルで正常に動作しますが、C:\ Windows \ Tempディレクトリに書き込むことができないため、ネットワークにプッシュすると機能しません。私は実際にそのディレクトリに書き込むコードを呼び出すわけではありませんが、それは次の例外を除いて、Webサービスへの呼び出しによって発生したと想像します。.NETがC: Windows Tempに書き込まないようにする

一時クラス(結果= 1)を生成できません。 エラーCS2001:ソースファイル 'C:\ WINDOWS \ TEMP \ cyalinh1.0.cs'は エラーCS2008:入力が指定されていませんでした '。詳細については、InnerException を参照してください。

.NETがTempディレクトリに書き込むのを防ぐ方法はありますか?それは.configファイルの設定ですか?

UPDATE

SGENは、Webサービスからこれらの動的に作成されたクラスの生成を防止するために使用することはできますか?

+0

あなたが実行していることは、実行時にあなたのアセンブリを実行すると実際に別のラウンドを実行する必要があるということ以外には答えがありませんジャストインタイムコンパイルを使用して、ILからマシンコードにコードを取得します。 –

+0

Webサービス経由で呼び出されるDLLをSGENingすることで、これらの動的クラスのコンパイルを防止できますか? – Josh

答えて

4

Webサービスに%SystemRoot%\ Temp(MSDN)の読み取り/書き込みアクセス権が必要なようです。

hereから:

あなたはASP.NET 2.0以上 を実行している場合、あなたはコマンドで必要な 権限割り当てることができます。

aspnet_regiis -GA MachineName\Account 

をこのblog postは、命令が含まれていますこれに使用するSystemRoot \ Tempフォルダの場所を変更する方法と、リフレクタを使用してウェブの設定を決定する方法についての説明を参照してください。設定はこのような状況のために設定する)

+0

一時ディレクトリのパスを設定するための設定、または環境変数(a la 'TMPDIR')もありますか? –

+0

一時フォルダーの変更方法に関する説明のリンクを追加する編集済みの投稿。 –

1

ここで問題になっているのは、一時コードを自動生成する関数を使用していることです。これを行う場所が必要です。だから、特定の場所にコードを書くことを防ぐことができますが、(どこかに格納しなければならない)コードを生成しないようにする唯一の方法は、一時クラスを生成する関数を使用しないことです。

0

ジョシュ、

を読んでいる必要があります私の推測では、あなたが作っているコールをキックしようとしているということでしょうターゲットPCのデバッグセッションを終了します。例外を除いて、ソースファイルをプルアップしようとしています。

根本的な原因は、Webサービスコールの例外である可能性があります。

Tempフォルダに書き込みを軽減するために、あなたがターゲット・マシンにジャストインタイムデバッグを無効にすることができるかもしれない:アプリの設定で<system.windows.forms jitDebugging="false"/>よう 何か

私はいくつかの掘削をしました。問題はクライアントマシンではなくサーバー上にあるようです。 Webサービスをホストしているユーザーの一時フォルダに読み取り/書き込みのアクセス許可を追加すると、問題ありません。上の狂ったアドバイスに申し訳ありません...

0

多くのフォーラムを検索し、最終的にそれを修正しました。これは私のために働いています。

  1. 右クリックC:tempフォルダ\ \ WINDOWSは

    セキュリティ]タブの下
  2. 、ユーザーのリストにiisuserアカウントを追加し、与える読み取り/書き込み/実行アクセス権(または)完全な権限

  3. は、ウェブサイトに

ザッツそれを再起動!!! ...デプロイされたWebサービスを消費しますアプリケーションをチェックし

これはすべきです..

関連する問題