none
「規定のWebサイト」のweb.configの内容が「仮想サイト」に引き継がれてシステムが動作しなくなる。 RRS feed

  • 質問

  • こんにちは。アべです。

    当方、1つの仮想サーバで複数のWebサイトを構築しております。

     規定のWebサイト
      +--仮想サイトA
      +--仮想サイトB
      +--仮想サイトC

    この度、仮想サイトAを規定のサイトにするということで、
    「仮想サイトA」の物理パスを「規定のWebサイト」に
    物理パスに設定したら動かなくなりました。

    どうすればよいのでしょうか?

    各サイトは
      ・相対パスで作成されている。
      ・動かないのは、設定変更後の仮想サイトBとCで
        原因は、規定のWebサイトのWeb.Configの内容を引き継いだため。
       
        ⇒この対処方法がわからずに困っている。
        
          マイクロソフトの下記の非公開の属性を使えば仮想サイトBとCは
          動作するが、この属性では、今度は、規定のサイトが動かなくなる。

          この規定のサイトのエラーは、JavaScriptのエラーがでまくります。

          非公開の属性 inheritInChildApplications
          <location path="." inheritInChildApplications="false"> 


    助けて欲しい部分
      単独では動作するサイトが親子関係のディレクトリ
      構造下にあると動かなくなるので、非常に困っています。
     
      正攻法で何か設定があるかと思うのですが、何かご存知の方
      アドバイスをお願いいたします。

    以上

    2010年2月28日 1:47

回答

  • > ・動かないのは、設定変更後の仮想サイトBとCで
    >    原因は、規定のWebサイトのWeb.Configの内容を引き継いだため。

    親から引き継いで問題がある設定は、子の web.config で再定義するということで
    対応できないのでしょうか?

    そんな簡単な話ではないということでしたら失礼しました。

    • 回答としてマーク 菊地俊介 2010年3月9日 9:30
    2010年2月28日 6:19
  • > ・動かないのは、設定変更後の仮想サイトBとCで
    >    原因は、規定のWebサイトのWeb.Configの内容を引き継いだため。

    ほんとに原因は既定のweb.configの内容を引き継いでいることにあるのでしょうか?
    「仮想サイトA」の物理パスを「規定のWebサイト」に物理パスに設定したあと、仮想サイトBやCはIIS上から見えなくなりそうな気がしますが、そのあたりどう設定してどう動かそうとしているのでしょうか?
    むしろそのあたりのパスの整合性とかの問題がでていそうですけど。。。

    あおい情報システム株式会社 小野修司(どっとねっとふぁん)
    • 回答としてマーク 菊地俊介 2010年3月9日 9:30
    2010年3月1日 1:59
  • こんにちは。
    「動かなく」なるというのが具体的にどのような状況なのかを示せば、より良いアドバイスが得られると思います。

    下記の経験があります。

    既定のWebサイトのASP.NETバージョンを2.0にして、さらに3.5の機能を使用したいのでそのための記述をweb.configに追加したところ、子の仮想サイトB,Cでweb.configの構文エラーが発生して「動かなく」なってしまいました。
    子の仮想サイトB,Cが1.xなため、親から継承した3.5向けweb.configを解析できなかったからです。
    結局は、規定のWebサイトにweb.configを置かなくて済むようにディレクトリの構造を変更しました。

    参考になれば幸いです。
    • 回答としてマーク 菊地俊介 2010年3月9日 9:30
    2010年3月1日 3:15

すべての返信

  • > ・動かないのは、設定変更後の仮想サイトBとCで
    >    原因は、規定のWebサイトのWeb.Configの内容を引き継いだため。

    親から引き継いで問題がある設定は、子の web.config で再定義するということで
    対応できないのでしょうか?

    そんな簡単な話ではないということでしたら失礼しました。

    • 回答としてマーク 菊地俊介 2010年3月9日 9:30
    2010年2月28日 6:19
  • > ・動かないのは、設定変更後の仮想サイトBとCで
    >    原因は、規定のWebサイトのWeb.Configの内容を引き継いだため。

    ほんとに原因は既定のweb.configの内容を引き継いでいることにあるのでしょうか?
    「仮想サイトA」の物理パスを「規定のWebサイト」に物理パスに設定したあと、仮想サイトBやCはIIS上から見えなくなりそうな気がしますが、そのあたりどう設定してどう動かそうとしているのでしょうか?
    むしろそのあたりのパスの整合性とかの問題がでていそうですけど。。。

    あおい情報システム株式会社 小野修司(どっとねっとふぁん)
    • 回答としてマーク 菊地俊介 2010年3月9日 9:30
    2010年3月1日 1:59
  • こんにちは。
    「動かなく」なるというのが具体的にどのような状況なのかを示せば、より良いアドバイスが得られると思います。

    下記の経験があります。

    既定のWebサイトのASP.NETバージョンを2.0にして、さらに3.5の機能を使用したいのでそのための記述をweb.configに追加したところ、子の仮想サイトB,Cでweb.configの構文エラーが発生して「動かなく」なってしまいました。
    子の仮想サイトB,Cが1.xなため、親から継承した3.5向けweb.configを解析できなかったからです。
    結局は、規定のWebサイトにweb.configを置かなくて済むようにディレクトリの構造を変更しました。

    参考になれば幸いです。
    • 回答としてマーク 菊地俊介 2010年3月9日 9:30
    2010年3月1日 3:15
  • 皆様、こんにちは。

    回答してくださった皆様、ありがとうございます。

    kiyo7447 さん、フォーラムのご利用ありがとうございます。
    その後いかがでしょうか。なにか進展はありましたか?

    勝手ながら、有用な情報と思われたた回答へ回答マークをつけさせていただきました。
    まだ解決していないようでしたら、回答者の皆様のコメントに有るような詳しい情報を投稿してみてください。

    今後ともフォーラムをよろしくお願いします。
    それでは!
    2010年3月9日 9:34
  • こんにちは。アべです。

    皆さん回答を有難うございます。

    規定のサイトが、子のサイトの有無で動く動かないが
    変わってしまったわけですが、動かなくなる現象は、
    いろいろと調べてみて原因の場所まではわかりましたので、
    つたない情報ですが、ご報告させて頂きます。

    現象としては、JavaScriptのエラーがでまくっており、
    紐解いていくとget$()のJavaScriptが使えなくなっていることに起因していました。

    で、さらに調べてみるとこれは、ScriptResource.axdが出力している
    共通のJavaScript関数であり、

    子のサイトのWeb.configを取り込むと
     
    規定のWebサイトでその共通のJavaScriptが出力されなくなっておりました。

    (これは、IE8の「開発者ツール」で確認し、
    スクリプト一覧に「ScriptResource.axd」が無いことを確認しました。)

    私のほうは、この原因追及をあきらめて、
    jQueryを取り込みget$()関数を$()間数に置き換え対応として終了しました。

    (親のサイトで子のサイトの設定が影響(継承)することは
    資料で読みましたが、逆なので原因不明でわからずじまいです。)

    皆様有難うございました。
    ご報告が遅くなりすみませんでした。

    今後とも宜しくお願い致します。 

    2010年3月12日 7:23
  • > 紐解いていくとget$()のJavaScriptが使えなくなっていること
    > に起因していました。

    get$ ではなくて $get ではないですか?

    $get は Microsoft AJAX Library の中で定義されているグローバル関
    数で、document.getElementById() と機能的にはほぼ同じです。

    ScriptManager をページに加えると、ASP.NET AJAX に必要なスクリ
    プトをクライアントページに自動的に出力します。その中に AJAX
    Library が含まれており、$get が定義されています。

    ただし、Web.config にもいろいろ設定が必要です。たぶん、それがない
    のが今回の問題の原因だと思われます。

    2010年3月12日 13:34