none
GACにdllを追加できない RRS feed

  • 質問

  • いつも、お世話になります。

    ASP.netを学習している初心者です。環境はWindows7 Ultimate,Visual Studio 2010です。

    プログラムの実行時に次のエラーが出てしまいます。

    サーバー エラー メッセージ: ファイルまたはアセンブリ 'LoggerHttpModule'、またはその依存関係の 1 つが読み込めませんでした。指定されたファイルが見つかりません。

    そこでGACにLoggerHttpModule.dllを登録しました。

    最初にコンソールウィンドウで

    vbc class1.vb /out:LoggerHttpModule.dll /t:library /keyfile:mykey.snk

    次に

    gacutil /i LoggerHttpModule.dll

    を実行しました。コンソール画面には「アセンブリが正しくキャッシュに追加されました」のメッセージが出力されました。しかしC:\Window\assemblyを見てもLoggerHttpModule.dllは見つかりません!

    そのためと思いますがDefalt.aspxを「ブラウザで表示」させると以前と同じエラーが出てしまいます。

    【教示いただきたいこと】

    1.GACへの登録方法

    2.サーバエラーへの対処方法

    宜しくお願いします

     

     


    わかばマーク
    2011年9月8日 13:50

回答

  • .NET Framework のバージョンはどれにあたるのでしょうか?
    .NET 4 なら C:\Windows\Assembly には現れません。
    (参考:http://bbs.wankuma.com/index.cgi?mode=al2&namber=59761&KLOG=101


    質問スレッドで解決した場合は、解決の参考になった投稿に対して「回答としてマーク」のボタンを押すことで、同じ問題に遭遇した別のユーザが役立つ投稿を見つけやすくなります。
    • 回答としてマーク TasCal 2011年9月17日 13:44
    2011年9月8日 15:08
    モデレータ
  • HTTP モジュールは、ソースコードならアプリケーションルート直下の App_Code
    フォルダに(Web サイトプロジェクトの場合)、dll なら同じくアプリケーショ
    ンルート直下の bin フォルダに配置しましょう。

    そのことは前から何度かレスしているつもりですが、何故そのようにしないので
    すか?

    あと、開発サーバーを開発に使うのは止めましょう。開発マシンで IIS が使え
    ないならともかく、Win7 Ultimate なら IIS7.5 が使えます。開発サーバーで
    動いても、IIS に配置すると動かないことはよくあります。

     

    • 回答としてマーク TasCal 2011年9月17日 13:23
    2011年9月17日 0:04
  • 本にはLoggerHttpModuleのプロパティからSystem.webの参照を追加するようにかいてありますが、それだけではビルドしてもWebプロジェクト側にBinフォルダが自動で作成されません。さらにWebプロジェクト側には手動でBinフォルダを追加しWebプロジェクトのプロパティの参照設定でLoggerHttpModuleを参照する必要がありますが、本の①ソリューション構成にBinがない②Webプロジェクト側のプロパティの参照設定の記述がないため本の記述通りにしか実行できないわたくしのような初心者には分かりませんでした。

    あんまり引っ張っても意味はないんですが、まるで書籍が間違っているように誤解されそうなのではっきりさせておきます。

    念のためもう一度確認してみましたが、書籍にはっきり、Web側からLoggerHttpModuleをプロジェクト参照で参照設定するように手順が書かれています(p306)。
    また、Binフォルダは自分で作成する必要はなく、参照設定してビルドすれば自動で作られ、自動的にdllのコピーまで行われます。

    書籍の手順に漏れはなく、うまく実行できなかったのは、書籍の記述通りにやっていないからです。

    • 回答としてマーク TasCal 2011年9月22日 1:17
    2011年9月21日 12:52

すべての返信

  • そもそもなぜGACに登録したいのでしょうか?
    また、vbc.exeなどを利用してコンパイルされてますが、いまつくってるプログラムのソリューションにclass1.vbを含めてビルドすればいいんじゃないでしょうか?
    GACに登録したものを参照して利用するということは、環境が変わればまたその環境のGACに登録するという手間も含みます。

    2011年9月8日 14:07
  • .NET Framework のバージョンはどれにあたるのでしょうか?
    .NET 4 なら C:\Windows\Assembly には現れません。
    (参考:http://bbs.wankuma.com/index.cgi?mode=al2&namber=59761&KLOG=101


    質問スレッドで解決した場合は、解決の参考になった投稿に対して「回答としてマーク」のボタンを押すことで、同じ問題に遭遇した別のユーザが役立つ投稿を見つけやすくなります。
    • 回答としてマーク TasCal 2011年9月17日 13:44
    2011年9月8日 15:08
    モデレータ
  • 試しに

    gacutil /l LoggerHttpModule

    とすると、どうなるでしょうか?
    2011年9月8日 15:10
  • GACに入れるのであれば、httpModuleの登録で厳密名を指定しているか確認しましょう。

    厳密名ではなく簡易名(単にLoggerHttpModuleなど)を使用する場合は、GACではなくbinフォルダに配置しましょう。

    2011年9月9日 6:40
  • GACに入れるのであれば、httpModuleの登録で厳密名を指定しているか確認しましょう。

    厳密名ではなく簡易名(単にLoggerHttpModuleなど)を使用する場合は、GACではなくbinフォルダに配置しましょう。

    厳密名は大丈夫みたいですよ。コード署名はしているみたいですし、GAC の登録もできているみたいですので。
    厳密名が関係するのは、アセンブリの登録時ではなくて、アセンブリを参照する時(実行時)ではないでしょうか。

    実行時にエラーが出てしまうのはアセンブリを見つけることができないのが理由のようですので、ASP.NET のプロジェクトに参照設定しているアセンブリが GAC に登録したものと同じでないとかを確認してみてはいかがでしょうか。

    アセンブリを GAC に登録するのであれば、
    ・GAC に登録したものと同一の dll ファイルを、プロジェクトの参照設定に入れる。
    ・参照設定した dll の「ローカル コピー」は False で良い。
    とすれば良いはずです。

    アセンブリを GAC に登録しなくて良いのであれば、
    ・参照設定した dll の「ローカル コピー」を True にする。
    としましょう。 
    2011年9月9日 7:20
  • 厳密名は大丈夫みたいですよ。コード署名はしているみたいですし、GAC の登録もできているみたいですので。
    厳密名が関係するのは、アセンブリの登録時ではなくて、アセンブリを参照する時(実行時)ではないでしょうか。
    GAC登録という意味ではなく、web.configのhttpModuleの登録の意味で書きました。
    ので、実行時の話です。
    ※単にLoggerHttpModuleという名前を指定していたら、GACからはロードできませんよという話です。
    • 編集済み なちゃ 2011年9月9日 7:26
    2011年9月9日 7:25
  • GAC登録という意味ではなく、web.configのhttpModuleの登録の意味で書きました。
    ので、実行時の話です。
    ※単にLoggerHttpModuleという名前を指定していたら、GACからはロードできませんよという話です。

    なるほど、よく見直したら httpModule と書いてありますね。失礼しました。
    httpModule だったら、参照設定だけではダメですね。
    2011年9月9日 7:46
  • 問題の dll は HTTP モジュールですか?

    そうであれば、他の方もコメントされていますが GAC に登録する必要は
    なさそうに思えますが、何か特別な理由があるのでしょうか。

    以下のチュートリアルに書いてあるようにソースファイルを App_Code フ
    ォルダに置くか(Web サイトプロジェクトの場合)、

    チュートリアル : カスタム HTTP モジュールを作成および登録する

    http://msdn.microsoft.com/ja-jp/library/ms227673.aspx

    コンパイルした dll を入手したのであればそれを bin フォルダに置くだ
    けでよいとおもいますが。

    ただし、上のチュートリアルに書いてあるように web.config の設定は必
    要です。

     


    2011年9月9日 13:01
  • 問題の dll は HTTP モジュールですか?

    そうであれば、他の方もコメントされていますが GAC に登録する必要は
    なさそうに思えますが、何か特別な理由があるのでしょうか。

    以下のチュートリアルに書いてあるようにソースファイルを App_Code フ
    ォルダに置くか(Web サイトプロジェクトの場合)、

    チュートリアル : カスタム HTTP モジュールを作成および登録する

    http://msdn.microsoft.com/ja-jp/library/ms227673.aspx

    コンパイルした dll を入手したのであればそれを bin フォルダに置くだ
    けでよいとおもいますが。

    ただし、上のチュートリアルに書いてあるように web.config の設定は必
    要です。

     


    問題のdllはHTTPモジュールです。

    GACに登録しようとしたのは正直言って苦し紛れです。プログラム実行時に「サーバー エラー メッセージ: ファイルまたはアセンブリ 'LoggerHttpModule'、またはその依存関係の 1 つが読み込めませんでした。指定されたファイルが見つかりません。」が出てしまうのでGACに登録したら出なくなるのではないかと思い登録しました。しかしビルド時にエラーが出るのではなく実行時のエラーですから的外れです。

    実際のソリューションは1つのプロジェクトと1つのクラスライブラリーで構成しています。今回たくさんの方からアドバイスをいただきました。どうもありがとうございます。

    SufferOnWwwさんから教えていただいたチュートリアルはThe specified CGI application encountered an error and the server terminated the process.のメッセージが出てしまいます。
    わたくが使用しているweb.configは以下のようなものです。
    <?xml version="1.0"?>
    <!--
      ASP.NET アプリケーションを構成する方法の詳細については、
      http://go.microsoft.com/fwlink/?LinkId=169433 を参照してください
      -->
    <configuration>
     <system.web>
      <httpModules>
       <add name="LoggerHttpModule" type="LoggerHttpModule.LoggerHttpModule,LoggerHttpModule"/>←ここでエラーが発生します
      </httpModules>
      <compilation debug="true" strict="false" explicit="true"/>
     </system.web>
    </configuration>
    .NET Frameworkは2.0(LoggerHttpModuleも2.0です)です。(なお、.NET Framework 4.0でも同じエラーがでてしまいます)
    教科書(「基礎からのASP.NET」(SoftBankCreative)P305)通りにコーディングしたつもりですが何か問題があるのでしょうか。

    お手数おかけしますがご教示願います


    わかばマーク
    2011年9月9日 14:17
  • > SufferOnWwwさんから教えていただいたチュートリアルはThe specified CGI
    > application encountered an error and the server terminated the process.
    > のメッセージが出てしまいます。

    Microsoft のサイトに障害が発生しているようです。ブラウザによっては問題ない
    場合もあるようです。IE でダメなら Firefox で試すなどしてみてください。

    MSDNライブラリが見れない
    http://social.msdn.microsoft.com/Forums/ja-JP/vsgeneralja/thread/84e76939-4f1c-4cd4-8583-690adab9c67e


    > <add name="LoggerHttpModule" type="LoggerHttpModule.LoggerHttpModule,LoggerHttpModule"/>

    type の設定が変です。type="名前空間名.クラス名" として試してみてください。

    LoggerHttpModule がクラス名で、名前空間を設定していないなら以下のようにな
    ります。

    type="LoggerHttpModule"

     

    2011年9月10日 2:16
  • FireFoxはインストールしていないのでご教示いただいたサイトは復旧後参照させていただきます。
    typeを変えて実行してみましたが、いずれも「構成にエラーがあります」と出力されます。
    ただエラーメッセージは下記のように微妙に異なります。
    (1)type="LoggerHttpModule"→LoggerHttpModuleを読み込めませんでした
    (2)type="LoggerHttpModule,LoggerHttpModule"→LoggerHttpModuleまたはその依存関係の1つが読み込めませんでした。指定したファイルが見つかりません。
    (3)type="LoggerHttpModule.LoggerHttpModule,LoggerHttpModule"→ファイルまたはアセンブリLoggerHttpModuleまたはその依存関係の1つが読み込めませんでした。指定したファイルが見つかりません。
    ソリューションの構成は以下のようです
    --Chap22
    |   |- App_Data
    |   |  +MyLogFile.txt
    |   |-App_Code
    |   |
    |   |-Global.asax
    |   |
    |   |-Web.config
    |
    |---LoggerHttpModule(Chap22プロジェクトにクラスライブラリとして追加した)
         +class1.vb

    以上のような構成であれば(3)で上手くいくはずと思いますが、どこかに問題あるのでしょうか。
    お手数おかけしますがご教示いただければと思います。

    なお、class1.vbは下記のようにコーディングしています

    Imports Microsoft.VisualBasic
    Imports System
    Imports System.Configuration
    Imports System.Web
    Imports System.Diagnostics
    Imports System.IO
    Imports System.Web.HttpContext
    Imports System.Text

    Public Class LoggerHttpModule
        Implements IHttpModule
        Private httpApp As HttpApplication
        Const eventLogSource As String = "MySource"
        Const eventLogName As String = "MyLog"
        Const LogfileName As String = "~/App_Data/MylogFile.txt"
        Dim fs As FileStream
        Dim sw As StreamWriter
        Public Sub New()
            If Not EventLog.SourceExists(eventLogSource) Then
                EventLog.CreateEventSource(eventLogSource, eventLogName)
            End If
        End Sub
        Public Sub Dispose() Implements System.Web.IHttpModule.Dispose

        End Sub

        Public Sub Init(ByVal context As System.Web.HttpApplication) Implements System.Web.IHttpModule.Init
            Me.httpApp = context
            AddHandler context.BeginRequest, AddressOf logWrite
        End Sub
        Public Sub Logwrite(ByVal sender As Object, ByVal e As EventArgs)
            Dim strLog As New StringBuilder()
            strLog.Append(System.Web.HttpContext.Current.Request.Url.ToString())
            strLog.Append("/")
            strLog.Append(DateTime.Now.ToString())
            strLog.Append("/")
            strLog.Append(System.Web.HttpContext.Current.Request.UserAgent.ToString())
            EventLog.WriteEntry(eventLogSource, strLog.ToString())
            fs = New FileStream(Current.Server.MapPath(LogfileName), FileMode.Append, FileAccess.Write, FileShare.Write)
            sw = New StreamWriter(fs)
            sw.WriteLine(strLog.ToString())
            sw.Close()
            fs.Close()
        End Sub
    End Class

     


    わかばマーク
    2011年9月10日 14:19
  • 返信をいただきありがとうございます。

    >、いまつくってるプログラムのソリューションにclass1.vbを含めてビルドすればいいんじゃないでしょうか?

    ご指摘のようにビルドしてみましたがうまくゆきませんでした。


    わかばマーク
    2011年9月10日 14:22
  • ご回答いただきありがとうございます。

    >.NET 4 なら C:\Windows\Assembly には現れません

    ご指摘の場所にLoggerHttpModuleは登録されていました。


    わかばマーク
    2011年9月10日 14:25
  • > FireFoxはインストールしていないのでご教示いただいたサイトは復旧後参照
    > させていただきます。

    何故 MSDN ライブラリを読まないのですか? MSDN ライブラリを読むことを後
    回しにする姿勢が問題だと思いますけど。
    2011年9月10日 16:17
  • ・Chap22 のプロジェクト タイプは、「Web サイト」ですか?それとも「Web アプリケーション」ですか?
    ・Chap22 の実行環境から見て、LoggerHttpModule.dll はどこにありますか?
    2011年9月11日 2:42
  • 参考になるページがあったのを思い出したのでリンクを張っておきます。

    ASP.NET Web プロジェクト内の共有コード フォルダー

    2011年9月12日 14:21
  • > 教科書(「基礎からのASP.NET」(SoftBankCreative)P305)通りにコーディング
    > したつもりですが何か問題があるのでしょうか。

    その本を立ち読みしてみました。

    LoggerHttpModule というプロジェクトを追加して、その中の class1.vb に HTTP
    モジュールを作成し、コンパイルすると bin フォルダが自動的に作られ、その中
    に dll ができるというようなことが書いてありました。

    しかし、binフォルダができるのは Web サイト下ではなく、LoggerHttpModule プ
    ロジェクト下なので、web.config でどのように設定しようと Web アプリは dll
    を参照できないということのようです。

    動くようにするには、web サイト下に bin フォルダを手動で作って、その中に
    dll をコピーする必要があるようです。

     

    2011年9月14日 14:17
  • 同一のソリューションに別プロジェクトとして入れているなら、Web側から参照設定するのが一般的なやり方だと思うんですけどね。
    その本たまたま見つけたので見てみましたが、やっぱり参照設定するように書いてあります。この手順が抜けているとかじゃないですかね?

    あと、一応、

    >> <add name="LoggerHttpModule" >type="LoggerHttpModule.LoggerHttpModule,LoggerHttpModule"/>
    >
    >type の設定が変です。type="名前空間名.クラス名" として試してみてください。

    これは変ではありません、というかこちらの方が普通の指定で、アセンブリ名を書かない方が省略した書き方です。
    今回の場合は、別プロジェクトで別アセンブリとしてモジュールを作成しているので、アセンブリ名を指定する必要があります。

    2011年9月15日 12:41
  • SuferOnWwwさん、なちゃさんアドバイスいただきありがとうございます。
    本件、まだ解決していませんが少し前進しましたので状況報告をさせていただきます。

    1.構成エラーはでなくなりました
    (1)対策内容:web.configの<system.web>を<system.webServer>に変更しました。
    (2)本件は下記を参考にしました。

    チュートリアル : カスタム HTTP モジュールを作成および登録する
     
    http://msdn.microsoft.com/ja-jp/library/ms227673.aspx
    上記にIIS7.0統合モードでのweb.configの記述例がありそれを参考にしました

    2.新たな問題
    本HTTPモジュールはAPP_Data下のMylogFile.txtにアクセスログを書き込むものですが全く書き込みが行われません。
    WebサイトのFrameworkが2.0の時、IIS7.0を使用するとおかしいのでしょうか?
    WebサイトおよびHTTPモジュールをFramework4.0で作成して試してみます。


    わかばマーク
    2011年9月15日 13:27
  • > 対策内容:web.configの<system.web>を<system.webServer>に変更しました。

    たぶん、開発サーバーを使っていると推測していますが、そうであれば、上
    記は対策になっていません。

    単に <add name="LoggerHttpModule" type="LoggerHttpModule... が無視さ
    れているだけです。

    だからエラーは出ないし、HTTP モジュールはアプリケーションに追加できて
    いないので動いていない、動いてないので当然ログは残らないと言うことに
    なっているのだと思います。

    2011年9月16日 13:00
  • > 対策内容:web.configの<system.web>を<system.webServer>に変更しました。

    たぶん、開発サーバーを使っていると推測していますが、そうであれば、上
    記は対策になっていません。

    単に <add name="LoggerHttpModule" type="LoggerHttpModule... が無視さ
    れているだけです。

    だからエラーは出ないし、HTTP モジュールはアプリケーションに追加できて
    いないので動いていない、動いてないので当然ログは残らないと言うことに
    なっているのだと思います。


    ご指摘の通り、開発サーバを使用しています。またFramework4.0にしてみましたがFramework2.0とおなじ「構成エラー」が出てしまいます。

    web.configは<system.web>で実行しました。


    わかばマーク
    2011年9月16日 13:32
  • HTTP モジュールは、ソースコードならアプリケーションルート直下の App_Code
    フォルダに(Web サイトプロジェクトの場合)、dll なら同じくアプリケーショ
    ンルート直下の bin フォルダに配置しましょう。

    そのことは前から何度かレスしているつもりですが、何故そのようにしないので
    すか?

    あと、開発サーバーを開発に使うのは止めましょう。開発マシンで IIS が使え
    ないならともかく、Win7 Ultimate なら IIS7.5 が使えます。開発サーバーで
    動いても、IIS に配置すると動かないことはよくあります。

     

    • 回答としてマーク TasCal 2011年9月17日 13:23
    2011年9月17日 0:04
  • HTTP モジュールは、ソースコードならアプリケーションルート直下の App_Code
    フォルダに(Web サイトプロジェクトの場合)、dll なら同じくアプリケーショ
    ンルート直下の bin フォルダに配置しましょう。

    そのことは前から何度かレスしているつもりですが、何故そのようにしないので
    すか?

    あと、開発サーバーを開発に使うのは止めましょう。開発マシンで IIS が使え
    ないならともかく、Win7 Ultimate なら IIS7.5 が使えます。開発サーバーで
    動いても、IIS に配置すると動かないことはよくあります。

     


    SufferOnWwwさんの言われる通りの構成とし実行したら上手くゆきました!(開発環境でしたが)

    いうことをきかない投稿者に辛抱強くお付き合いいただき本当に感謝申し上げます。今後開発はIISで行います。なお、この本にはサポートサイトがありました。(http://isbn.sbcr.jp/61810/)その中にコーディング例が載っていました。コーディング例はまさしくSufferOnWwwさんのレス通りのものでした。テキスト内容とコーディング例が異なる読者は混乱します。本の作り方に丁寧さが欠けています。しかしテキスト通りやって動かないといろいろ試すのでそれが勉強になります。この本はAmazonで1位の評価だそうですが

    そのためかもしれません。


    わかばマーク
    2011年9月17日 13:23
  • テキスト内容とコーディング例が異なる読者は混乱します。本の作り方に丁寧さが欠けています。しかしテキスト通りやって動かないといろいろ試すのでそれが勉強になります。

    ちょっとこれだけ教えてほしいのですが、結局のところ本の内容とはどこがどう違ったんでしょうか?
    本の内容では何が足りなくて(あるいは何が間違っていて)、どうすることによって動くようになったんでしょうか?

    ※本屋でちょっと見ただけではっきり覚えてないんですが、パッと見た感じではおかしい内容には見えなかったので(少なくとも、HTTPモジュールを動かす方法の部分が間違っているようには見えなかったので)

    2011年9月17日 15:52
  • ちょっとこれだけ教えてほしいのですが、結局のところ本の内容とはどこがどう違ったんでしょうか?
    本の内容では何が足りなくて(あるいは何が間違っていて)、どうすることによって動くようになったんでしょうか?

    ※本屋でちょっと見ただけではっきり覚えてないんですが、パッと見た感じではおかしい内容には見えなかったので(少なくとも、HTTPモジュールを動かす方法の部分が間違っているようには見えなかったので)


    なちゃさん、今回はいろいろアドバイスいただきありがとうございます。

    本の内容が間違っていると思われるのは以下の点です

    1.ソリューションの構成

    (1)本に示されている構成

    --Chap22(ソリューション)
    | |- App_Data
    | | +MyLogFile.txt
    | |-App_Code
    | |
    | |-Global.asax
    | |
    | |-Web.config
    |
    |---LoggerHttpModule(Chap22プロジェクトにクラスライブラリとして追加した)
    +class1.vb

    (2)動く構成

    --Chap22(ソリューション)

    |- App_Data
    | +MyLogFile.txt
    |-Bin 

    |  +LoggerHttpModule.all
    |  + LoggerHttpModule.pdb
    |  + LoggerHttpModule.xml
    |-Defalt.aspx

      +web.config

    ポイントはソリューションの下にBinフォルダを付けてその中にdllを保存したことです.

    上記はSuferOnWwwさんの下記の指摘を実装したものです。

    >LoggerHttpModule というプロジェクトを追加して、その中の class1.vb に HTTP
    >モジュールを作成し、コンパイルすると bin フォルダが自動的に作られ、その中
    >に dll ができるというようなことが書いてありました。

    >しかし、binフォルダができるのは Web サイト下ではなく、LoggerHttpModule プ
    >ロジェクト下なので、web.config でどのように設定しようと Web アプリは dll
    >を参照できないということのようです。

    >動くようにするには、web サイト下に bin フォルダを手動で作って、その中に
    >dll をコピーする必要があるようです。

    なお、本のサポートサイトの内容(http://isbn.sbcr.jp/61810/)は上記の動く構成と同じです。(テキスト内の記述どおりではありません)


    わかばマーク
    2011年9月19日 14:37
  • >同一のソリューションに別プロジェクトとして入れているなら、Web側から参照設定するのが一般的なやり方だと思うんですけどね。
    >その本たまたま見つけたので見てみましたが、やっぱり参照設定するように書いてあります。この手順が抜けているとかじゃないですかね?

    と書いたように、本にはちゃんと参照設定をするように書かれています。
    参照設定すれば、dllは自動的にbinフォルダにコピーされます。

     

    2011年9月20日 12:08
  • >同一のソリューションに別プロジェクトとして入れているなら、Web側から参照設定するのが一般的なやり方だと思うんですけどね。
    >その本たまたま見つけたので見てみましたが、やっぱり参照設定するように書いてあります。この手順が抜けているとかじゃないですかね?

    と書いたように、本にはちゃんと参照設定をするように書かれています。
    参照設定すれば、dllは自動的にbinフォルダにコピーされます。

     


    なちゃさんご指摘ありがとうございます。空のBinフォルダを作成しWeb側からLoggerHttpMpduleを参照設定すればdllはBinフォルダにコピーされ、実行もOKです。これでまた一歩前進できました。

    ただ、本にはLoggerHttpModuleプロジェクトを参照設定しSystem.webを追加するように書いてあります(P302,303)がWeb側にBinフォルダを作成したり参照設定を追加する記述はないと思います。


    わかばマーク
    2011年9月21日 2:05
  • ただ、本にはLoggerHttpModuleプロジェクトを参照設定しSystem.webを追加するように書いてあります(P302,303)がWeb側にBinフォルダを作成したり参照設定を追加する記述はないと思います。


    「LoggerHttpModule プロジェクトを参照設定」しておいて [Web サイトのビルド] を実行すると、「空のBinフォルダを作成しWeb側からLoggerHttpMpduleを参照設定すればdllはBinフォルダにコピー」が自動的に実行されます。
    本の内容は正しいのではないでしょうか。(読んでないですけど)
    2011年9月21日 2:30
  • LoggerHttpModule プロジェクトを参照設定」しておいて [Web サイトのビルド] を実行すると、「空のBinフォルダを作成しWeb側からLoggerHttpMpduleを参照設定すればdllはBinフォルダにコピー」が自動的に実行されます。
    本の内容は正しいのではないでしょうか。(読んでないですけど)


    本にはLoggerHttpModuleのプロパティからSystem.webの参照を追加するようにかいてありますが、それだけではビルドしてもWebプロジェクト側にBinフォルダが自動で作成されません。さらにWebプロジェクト側には手動でBinフォルダを追加しWebプロジェクトのプロパティの参照設定でLoggerHttpModuleを参照する必要がありますが、本の①ソリューション構成にBinがない②Webプロジェクト側のプロパティの参照設定の記述がないため本の記述通りにしか実行できないわたくしのような初心者には分かりませんでした。
    わかばマーク
    2011年9月21日 4:19
  • 本にはLoggerHttpModuleのプロパティからSystem.webの参照を追加するようにかいてありますが、それだけではビルドしてもWebプロジェクト側にBinフォルダが自動で作成されません。さらにWebプロジェクト側には手動でBinフォルダを追加しWebプロジェクトのプロパティの参照設定でLoggerHttpModuleを参照する必要がありますが、本の①ソリューション構成にBinがない②Webプロジェクト側のプロパティの参照設定の記述がないため本の記述通りにしか実行できないわたくしのような初心者には分かりませんでした。

    あんまり引っ張っても意味はないんですが、まるで書籍が間違っているように誤解されそうなのではっきりさせておきます。

    念のためもう一度確認してみましたが、書籍にはっきり、Web側からLoggerHttpModuleをプロジェクト参照で参照設定するように手順が書かれています(p306)。
    また、Binフォルダは自分で作成する必要はなく、参照設定してビルドすれば自動で作られ、自動的にdllのコピーまで行われます。

    書籍の手順に漏れはなく、うまく実行できなかったのは、書籍の記述通りにやっていないからです。

    • 回答としてマーク TasCal 2011年9月22日 1:17
    2011年9月21日 12:52
  • 念のためもう一度確認してみましたが、書籍にはっきり、Web側からLoggerHttpModuleをプロジェクト参照で参照設定するように手順が書かれています(p306)。
    また、Binフォルダは自分で作成する必要はなく、参照設定してビルドすれば自動で作られ、自動的にdllのコピーまで行われます。

    書籍の手順に漏れはなく、うまく実行できなかったのは、書籍の記述通りにやっていないからです。

    なちゃさんご教示いただきありがとございます。ご指摘のとおり、p306の「作成手順」②[Webサイト]メニューの[参照の追加]で[プロジェクト]タブよりloggerHttpModuleクラスライブラリプロジェクトを参照設定する設定を行うとあります。今回、この個所は何度か見たと思いますが、結局は見逃していました。お恥ずかしい限りです。

    また、Binが自動的に作成されることも確認できました。今回、躓かなくても良いところ躓いてしまいましたが、最後まで面倒を見ていただきありがとうございました。


    わかばマーク
    2011年9月22日 1:17