[FIX] Src 属性を使用したコード ビハインド ファイルが UNC 共有上でコンパイルできない

この記事は、以前は次の ID で公開されていました: JP313105
この資料は、アーカイブされました。これは "現状のまま" で提供され、更新されることはありません。
現象
Web フォームをコンパイルすると、ASP.NET でコンパイル処理が失敗に終わり、次の (またはこれに類似の) エラー メッセージが表示されることがあります。
コンパイラ エラー メッセージ: CS2001: ソース ファイル
'\\server\sharename\webform1.aspx.cs' が見つかりませんでした。
このエラーは次の条件に該当する場合に発生します。
  • コード ビハインド モデルが使用されている場合
  • そのページで Src 属性を使用して動的コンパイルを行っており、Src 属性の参照先ファイルが、リモート コンピュータ上の汎用名前付け規則 (UNC) 共有にある場合
  • Web.config ファイルで偽装が有効になっている場合
原因
この問題が発生するのは、ワーカー プロセスの ID でコンパイラが開始されたときにワーカー プロセスがリモート共有を読み取れない場合です。ASP.NET では、ページの読み取りに偽装トークンが使用されるため、ページの読み取りに成功します。
解決方法
この問題を解決するには、次のいずれかの方法を使用します。
  • ワーカー プロセスを実行するアカウントに、リモート共有へのアクセス許可を与えます。システム アカウント、またはネットワーク サービスを使用する場合は、コンピュータ アカウントにアクセス許可を与えます。

    コンピュータ アカウントにリモート共有へのアクセス許可を与えるには、次の手順を実行します。
    1. 該当する共有を右クリックし、[プロパティ] をクリックします。
    2. [共有] タブの [アクセス許可] をクリックし、[追加] をクリックします。
    3. Web サーバーの名前を入力し、[名前の確認] をクリックします。ボックスに $machinename と表示されますが、これはこの共有の [アクセス許可] ダイアログ ボックスの [共有アクセス許可] に表示される名前と同じです。
  • コード ビハインド ファイルに動的コンパイルではなく、プリコンパイルされたダイナミック リンク ライブラリ (DLL) を使用します。
  • コード ビハインド ファイルではなく単一ページ ファイルを使用します。
  • 共有へのアクセス許可を持つアカウントでワーカー プロセスを実行します。この構成を行うには、Machine.config ファイルの processModel 要素のユーザー名とパスワードの各属性を使用します。
状況
マイクロソフトでは、この問題をこの資料の対象製品として記載されているマイクロソフト製品の問題として認識しています。この問題は、.NET Framework に含まれている ASP.NET 1.1、および .NET Framework 1.1 で修正済みです。
詳細

問題の再現手順

  1. Webform1.aspx という名前の .aspx ページを作成します。
  2. "@page ディレクティブ" に、次のいずれかのコードを使用します。
    <%@ Page language="c#"  Codebehind="WebForm1.aspx.cs"  Src = "WebForm1.aspx.cs" %>					
    または
    <%@ Page language="vb"  Codebehind="WebForm1.aspx.vb"  Src = "WebForm1.aspx.vb" %>					
  3. コード ビハインド ページを作成し、手順 2. で選択した "@page ディレクティブ" に対応する名前を付けます。
  4. コンピュータの Administrator の権限を持つドメイン ユーザー (domain\user) を追加します。
  5. 共有を作成してドメイン ユーザーのみにフル コントロール許可を与えます。
  6. インターネット サービス マネージャで Microsoft Internet Information Server (IIS) アプリケーションを作成し、接続先の [コンピュータ名] に domain\user と指定します。
  7. 手順 5. で作成した共有を参照先とするアプリケーションに、仮想ディレクトリを作成します。
  8. WebForm1.aspx とコード ビハインド ファイルを共有に移動します。
  9. Web.config ファイルを新規作成し、これに次のコードを追加します。
    <?xml version="1.0" encoding="utf-8" ?><configuration>  <system.web>    <authentication mode="Windows" />    <identity impersonate="true" userName="domain\user" password="password" />  </system.web></configuration>					
  10. Web アプリケーションの仮想ディレクトリに Web.config ファイルをコピーし、IIS アプリケーションに追加します。
  11. ブラウザでページを参照します。
kbreadme codebehind
プロパティ

文書番号:313105 - 最終更新日: 02/24/2014 15:39:04 - リビジョン: 2.2

  • Microsoft ASP.NET 1.0
  • Microsoft .NET Framework 1.0
  • kbnosurvey kbarchive kbfix kbbug kbconfig kbdeployment kbnofix kbreadme kbsecurity kbweb KB313105
フィードバック