<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
   <channel>
      <title>アーキテクト360</title>
      <link>http://architect360.apricot-jp.com/</link>
      <description></description>
      <language>ja</language>
      <copyright>Copyright 2011</copyright>
      <lastBuildDate>Wed, 28 Dec 2011 21:44:06 +0900</lastBuildDate>
      <generator>http://www.sixapart.com/movabletype/</generator>
      <docs>http://blogs.law.harvard.edu/tech/rss</docs> 

            <item>
         <title>インストーラーによるディスク領域の要件の確認が終わるまでしばらくお待ちください。</title>
         <description><![CDATA[Virual PCのゲストOSのWindows Server 2008 SP2(x86)において、FTP7.5をインストールしようとしたところ、使用許諾書の同意画面で「次へ」ボタンを押してたところ、次のエラーが発生して進めない。
<blockquote>インストーラーによるディスク領域の要件の確認が終わるまでしばらくお待ちください。</blockquote>
待てど暮らせど様子に変化はないので諦めた。どうも仮想環境で発生する現象のようである。

拙者は、次のようにコマンドプロンプトから実行させることでインストールできた。
msiexec /i  ftp7_x86fre_ja-jp.msi /qr
]]></description>
         <link>http://architect360.apricot-jp.com/800tips/post_76.html</link>
         <guid>http://architect360.apricot-jp.com/800tips/post_76.html</guid>
                  <category domain="http://www.sixapart.com/ns/types#category">800開発環境・ツールTips</category>
        
        
         <pubDate>Wed, 28 Dec 2011 21:44:06 +0900</pubDate>
      </item>
            <item>
         <title>ASP.NET MVCでクライアントキャッシュを有効にする方法（ASP.NET MVC Client Caching）</title>
         <description><![CDATA[筆者は、CSSや多くのjpgなどのイメージファイルを使用したWebサイトをホスティングサーバー（レンタルサーバー）上で稼動させている。
サーバーはIIS6.0でASP.NET MVCのWebアプリケーションである。あるとき、 Google Page Speedでサイトのパフォーマンスを測定してみた。85点あったのであるが、改善点のひとつにLeverage browser cachingがあった。ブラウザのクライアントキャッシュが利いていないということである。IIS6を完全に操作できるのであれば、仮想フォルダのプロパティを選んだ後、[HTTPヘッダー]タブを選び「コンテンツの有効期限を設定する」で有効期限を設定すればよい。IIS7および7.5では、IIS マネージャーの[機能ビュー] で、[出力のキャッシュ] をダブルクリックして設定することができる。
しかし、筆者がレンタルしているホスティングサーバーは、IISを間借りしているだけなので、この設定を行うことができなかった。

そこで、「<A href="http://www.codeproject.com/KB/aspnet/CachingImagesInASPNET.aspx?display=Print" target="_blank">Caching Images in ASP.NET</A>
」を参考にクライアントキャッシュを実現した。
「Caching Images in ASP.NET」は、ASP.NET用の使用例であるが、ASP.NET MVCでも使用することができた。

簡単に説明すると、クライアントからのjpgファイルのリクエストをIISで処理させず、ASP.NET側にリクエストをで処理させる。ASP.NET側で有効期限を追加してレスポンスを返すのである。仕組みは次のとおりである。（jpgファイルの場合）
<ol><li> ブラウザがjpgファイルをリクエストする</li>
<li>IISが要求を受け取りASP.NETへ要求を送る。通常は、jpg拡張子はHttpハンドラにマッピングされていないので、IISはそのままjpgファイルを返すが、jpgファイルの要求をASP.NETに渡すようにスクリプトマッピングの設定を追加する。（後述）</li>
<li>ASP.NETのカスタムHTTPハンドラで要求を受け取り、有効期限を追加してレスポンスを返す。Web.configのhttpHandlersの設定を追加することで可能になる。（後述）</li>
<li>有効期限が追加されたjpgファイルがクライアントに表示される。以降、有効期限内であればブラウザはこのjpgファイルをリクエストしないので、パフォーマンスが向上する</li>
</ol>

手順は次のとおりである。
まず、CachingHandlerクラスとCachingSectionクラスをサンプルと同じように作成します。
下記の例では、HelpersフォルダにCachingHandlerクラスを追加している。
jpg,gif,pngおよびcssファイルをキャッシュするようにする設定である。

まぜ、web.configにsectionGroupを追加する。
<textarea name="code" class="vb:nocontrols" cols="60" rows="10">
   <sectionGroup name="SoftwareArchitects">
    <section name="Caching" requirePermission="false" type="CacheSmaple.Helpers.Configuration.CachingSection, CacheSmaple" />
  </sectionGroup>
 </textarea>

続いて、Web.configのhttpHandlersに下記の4つを追加する。
IIS6の場合は、次のように拡張子に応じてハンドラのマッピングを行う。
<textarea name="code" class="vb:nocontrols" cols="60" rows="10">
<httpHandlers>
      <add verb="*" path="*.gif" type="CacheSmaple.Helpers.CacheSmaple"/>
      <add verb="*" path="*.jpg" type="CacheSmaple.Helpers.CacheSmaple"/>
      <add verb="*" path="*.png" type="CacheSmaple.Helpers.CacheSmaple"/>
      <add verb="*" path="*.css" type="CacheSmaple.Helpers.CacheSmaple"/>
</httpHandlers>
 </textarea>

続いて、サンプルどおりにSoftwareArchitectsセクションを追加する。有効期限は30日としている。
<textarea name="code" class="vb:nocontrols" cols="60" rows="10">
  <SoftwareArchitects>
    <Caching CachingTimeSpan="30">
      <FileExtensions>
        <clear/>
        <add Extension="gif" ContentType="image\gif"/>
        <add Extension="jpg" ContentType="image\jpeg"/>
        <add Extension="png" ContentType="image\png"/>
        <add Extension="css" ContentType="text\css" />
      </FileExtensions>
    </Caching>
  </SoftwareArchitects>
 </textarea>

IIS7および7.5の統合モードで使用する場合は、httpHandlersセクションに次の設定を追加する。
統合モードの場合は、ここの設定がHTTPハンドラマッピングの反映されるので、IISの作業は不要である。
<textarea name="code" class="vb:nocontrols" cols="60" rows="10">
      <add name="CachingGif" preCondition="integratedMode" path="*.gif" verb="*" type="CacheSmaple.Helpers.CachingHandler"/>
      <add name="CachingJpg" preCondition="integratedMode" path="*.jpg" verb="*" type="CacheSmaple.Helpers.CachingHandler"/>
      <add name="CachingPng" preCondition="integratedMode" path="*.png" verb="*" type="CacheSmaple.Helpers.CachingHandler"/>
      <add name="CachingCss" preCondition="integratedMode" path="*.css" verb="*" type="CacheSmaple.Helpers.CachingHandler"/>
 </textarea>

最後にASP.NET MVCのURLルーティング設定を変更する。これら4ファイルのリクエストをASP.NET MVCで処理せず、HTTPハンドラで処理するため、Global.asax.csファイルのRegisterRoutesで以下のように、4行を追加する。
<textarea name="code" class="C#:nocontrols" cols="60" rows="10">
        public static void RegisterRoutes(RouteCollection routes)
        {
            routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
		
	//add 
            routes.IgnoreRoute("{file}.jpg");
            routes.IgnoreRoute("{file}.png");
            routes.IgnoreRoute("{file}.gif");
            routes.IgnoreRoute("{file}.css");
 </textarea>

なお、最後に仮想フォルダのプロパティで、アプリケーションの拡張子のマッピングが必要である。拡張子がjpgの場合に、aspnet_isapi.dllで処理するように設定する。[仮想ディレクトリ]タブで[構成]ボタンを押して、[アプリケーションの構成]ダイアログを開き、マッピングの設定を行えばよい。（筆者の場合、この操作はホスティングサーバーの会社に依頼すると追加してもらえた。）同様にgif、png、cssについても作業を行う。
<img src="<$MTBlogURL$>img/iis6.jpg" >
]]></description>
         <link>http://architect360.apricot-jp.com/520aspnet_mvc/aspnet_mvcaspnet_mvc_client_ca.html</link>
         <guid>http://architect360.apricot-jp.com/520aspnet_mvc/aspnet_mvcaspnet_mvc_client_ca.html</guid>
                  <category domain="http://www.sixapart.com/ns/types#category">520ASP.NET MVC</category>
        
        
         <pubDate>Tue, 08 Feb 2011 22:00:57 +0900</pubDate>
      </item>
            <item>
         <title>IIS7 IIS7.5 「ファイルの存在を確認する」チェックボックスは？</title>
         <description><![CDATA[筆者は、ASP.NET MVCのWebアプリケーションを作っており、ある拡張子の要求をカスタムHTTPハンドラで処理させている。その拡張子は実際に存在する物理ファイルの拡張子ではなく、仮想の拡張子である。
IIS6では、Webサイトのプロパティでマッピングを追加する際、[アプリケーションの拡張子マッピングの追加/編集] ダイアログボックスの[ファイルの存在を確認する] チェック ボックスをオフにすることで、仮想ファイルの要求を受け取ることができた。IIS7およびIIS7.5 では、[ハンドラー マッピング] をダブルクリックして[スクリプト マップの追加] し、要求の制限ボタンを押した後に表示される[要求の制限]ダイアログボックスのマップタブが、同じ設定画面に見える。しかし、「ファイルの存在を確認する」チェックボックスがなく、代わりに「要求のマップ先が次の場合のみハンドラを呼び出す」がある。選べるのは、ファイル、フォルダ、ファイルまたはフォルダしかないので、ファイルの存在自身をチェックしないということができない。

　いろいろ調べてみたところ、IIS7およびIIS7.5ではWeb.configで設定するようだ。
<A href="http://blogs.iis.net/bills/archive/2007/05/25/tip-trick-how-to-turn-off-quot-verify-file-exists-quot-in-iis7.aspx" target="_blank">how to turn off "verify file exists" in IIS7</A>

resourceTypeに"Unspecified"を指定することで、存在をチェックしないようになる。IISとASP.NETが統合されたということなんですね。
<textarea name="xml" class="vb:nocontrols" cols="60" rows="10"> 
      <add name="VirtualHandler"  preCondition="integratedMode" path="*.vir"
verb="*" type="TestMVC.Helpers.VirtualHandler" resourceType="Unspecified"/>
</textarea>
]]></description>
         <link>http://architect360.apricot-jp.com/520aspnet_mvc/iis7_iis75.html</link>
         <guid>http://architect360.apricot-jp.com/520aspnet_mvc/iis7_iis75.html</guid>
                  <category domain="http://www.sixapart.com/ns/types#category">520ASP.NET MVC</category>
        
        
         <pubDate>Mon, 07 Feb 2011 22:21:12 +0900</pubDate>
      </item>
            <item>
         <title>ユーザープロファイルを読み込めませんでした</title>
         <description>2011年年1月15日に我が家のノートPCが壊れてしまいました。
ノートPCは、VAIO VGN-FS91Sで、Windows XP Home Editionです。
最初に現象は、「Unknown Hard Error」というエラーで正常に起動しません。
仕方なくリカバリーディスクを使い、OSのインストールで復活しました。しかし、ウィルスセキュリティゼロをインストールして更新すると、
「ユーザープロファイルを読み込めませんでした」などのエラーで、正常に起動しません。
セーフモードでは起動するのですが、通常起動するとさまざまなアプリケーションが起動しません。ハードウェアの故障かと思いダメもとで、OSからインストールしなおしました。
しかし、またウィルスセキュリティゼロをインストールすると、「ユーザープロファイルを読み込めませんでした」などのエラーで、正常に起動しません。エクスプローラーやコントロールパネルも正常に起動しなかったため、
ファイルのバックアップやアンインストールができないのです。

原因は、ウィルスセキュリティゼロにあるのではないかと思って、インターネットで調べたところありました！
「1月12日のWindows Updateを適用したWindows XPの一部の環境で、「ユーザープロファイルを読み込めませんでした」や「Unknown Hard Error」などのエラーでパソコンが起動できないお問い合せが寄せられています。」
だとさ。
解決策はあるが、うまくゆきませんでした。エクスプローラーさえ、まともに動かなくなるんだから。
http://sourcenext.force.com/faq50search/faq?id=VS-26099

私は、もうウィルスセキュリティゼロは使いません。
一部のデータがリカバリで失われてしまった。。。
</description>
         <link>http://architect360.apricot-jp.com/900/post_75.html</link>
         <guid>http://architect360.apricot-jp.com/900/post_75.html</guid>
                  <category domain="http://www.sixapart.com/ns/types#category">900その他</category>
        
        
         <pubDate>Mon, 24 Jan 2011 22:12:30 +0900</pubDate>
      </item>
            <item>
         <title>Microsoft JScript 実行時エラー:オブジェクトを指定してください。</title>
         <description><![CDATA[ASP.NET MVCとjQueryを使ったでWebアプリケーションをVisual Studio開発サーバーで実行しているときは何も問題はなかったのだが、ローカルIIS Webサーバー（Windows XPのIIS5.1）で実行すると、下記のエラーがIEで表示され、jQueryが全く動かない現象となった。Windows 2003 ServerのIIS6で実行しても同じく動作しない。IIS6で実行している場合は、ブラウザの左下に「ページでエラーが発生しました」と表示されている。
<blockquote>Microsoft JScript 実行時エラー:オブジェクトを指定してください。</blockquote>
ちなみに英語版では、次のエラーメッセージとなる
<blockquote>Microsoft JScript runtime error: object expected</blockquote>

調査したところ文字コードが問題であるとか、CDNのjsファイルを利用すれば治るなどの事例があったが、原因は、IEはスクリプトのパスが相対パスであるとき正しくjsファイルを読み込めないようである。（IISで実行しブラウザがIEのとき）
なので、srcで指定するファイルのパスは「http://」で始まるURLを書けば動作することがわかった。

<textarea name="code" class="JScript:nocontrols" cols="60" rows="10">
<%-- NG--%>
<script src="../../Scripts/jquery-1.3.2.js" type="text/javascript"></script>
 </textarea>

<textarea name="code" class="JScript:nocontrols" cols="60" rows="10">
<%-- OK--%>
<script src="http://localhost/Sample/Scripts/jquery-1.3.2.js" type="text/javascript" ></script>

<%-- OK--%>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js" type="text/javascript"></script>
 </textarea>]]></description>
         <link>http://architect360.apricot-jp.com/500tips/microsoft_jscript.html</link>
         <guid>http://architect360.apricot-jp.com/500tips/microsoft_jscript.html</guid>
                  <category domain="http://www.sixapart.com/ns/types#category">500プログラミングTips</category>
        
        
         <pubDate>Sat, 21 Aug 2010 22:21:36 +0900</pubDate>
      </item>
            <item>
         <title>Virtual PC 2007 使い方</title>
         <description><![CDATA[Windows XPをホストOSとし、ゲストOSをWindows Server 2008にする環境を作った。いろいろ試行錯誤したのでその環境を構築する設定と手順をまとめた。ホストOSの物理的なNIC（ネットワークカード）は1枚なので、ホストOSとゲストOS間の通信は、仮想のNICであるLoopbackAdapterを使う。ゲストOSが直接インターネットに接続することはできない。


<u>環境の詳細</u>
■ホストOS
Windows XP Professional（SP2）
NIC（ネットワークカード）　1枚
セキュリティソフトあり（ウィルスセキュリティ 2007）

■ゲストOS
Windows Server 2008 Standard


<u>環境の構築方法</u>
まず、ホストOS上で[コントロールパネル]-[ハードウェアの追加]でネットワークアダプタを追加する。
[新しいハードウェアデバイスの追加]-[一覧から選択したハードウェアをインストールする]を選んだ後、ネットワークアダプタを選び「Microsoft Loopback Adapter」を追加する。

次に、ホストＯＳのネットワークのプロパティで、この接続の設定を表示する。
Virtual Machine Network Serviceが追加されていることを確認する。


TCP/IPのプロパティは次のとおり。
　IPアドレス　192.168.10.1
　サブネットマスク　255.255.255.0
　デフォルトゲートウェイ　192.168.10.1
　優先DNSサーバー　192.168.10.1
IPアドレスは何でもいいのであるが、デフォルトゲートウェイおよび優先DNSサーバーは自分自身となるので、IPアドレスと同じにする。


次に、Virtual PCを起動し、Virtual PC　コンソールを表示する。
ゲストOSを選び設定ボタンを押す。ネットワークを選択しアダプタ１を「Microsoft Loopback Adapter」としてOKボタンを押す。


最後はゲストOSの設定である。ゲストOSを起動し、ゲストOSのネットワークのプロパティを開き、TCP/IPの設定を次のようにする。
　IPアドレス　192.168.10.10
　サブネットマスク　255.255.255.0
コントロールパネルを開き、Windowsファイアウォールを無効にする。　
ここでお互いにPINGコマンドで通信できるか確かめる。
　ゲストOSから　ping 192.168.10.1
　ホストOSから　ping 192.168.10.10
正しい応答が返ってくればOKである。


拙者の場合ホストOSにウィルスセキュリティソフトがインストールされており、そのファイアウォール機能が働いているためPINGが通らなかった。通信する際は一時的にファイアウォール機能をOFFにすれば通信することができた。]]></description>
         <link>http://architect360.apricot-jp.com/800tips/virtual_pc_2007.html</link>
         <guid>http://architect360.apricot-jp.com/800tips/virtual_pc_2007.html</guid>
                  <category domain="http://www.sixapart.com/ns/types#category">800開発環境・ツールTips</category>
        
        
         <pubDate>Sun, 25 Apr 2010 17:44:31 +0900</pubDate>
      </item>
            <item>
         <title>このログインで要求されたデータベースXXX を開けません。ログインに失敗しました。ASPNET はログインできません</title>
         <description><![CDATA[ASP.NET Webアプリケーションから、SQL Server 2005のデータベースに接続するアプリケーションにおいて、接続の際に次のエラーメッセージが表示された。
<blockquote>このログインで要求されたデータベースXXX を開けません。ログインに失敗しました。  ASPNET はログインできません</blockquote>
接続文字列は下記のとおりで、Windows認証で接続する方法である。
<textarea name="xml" class="vb:nocontrols" cols="60" rows="10"> <add name="コネクション名" connectionString="Data Source=localhost;Initial Catalog=TestDB;Integrated Security=True;Connect Timeout=60;" providerName="System.Data.SqlClient" />
</textarea>

エラーの原因は、ASP.NETランタイムを実行しているユーザー「マシン名\ASPNET」に、TestDBデータベースへのアクセス権がないためである。解決方法には、接続文字列にユーザーとパスワードを追加しSQL Server認証で接続させる方法もあるが、ここでは接続文字列はそのままでWindows認証を使う方法を示す。つまり、SQL Serverにログインユーザに、Windowsアカウントのひとつである「マシン名\ASPNET」を追加し、TestDBへのアクセスを可能にするのである。

まず、「マシン名\ASPNET」がSQL Serverのログインできるように、ログインユーザを作る。
手順は、Management StudioでSQL Serverのインスタンスを表示し、[セキュリティ]-[ログイン]で新しいユーザを選ぶ。
ログイン名：マシン名\ASPNET
認証方法：Windows認証
次に、このマシン名\ASPNETに、TestDBへのアクセス権を与える。
手順は、「マシン名\ASPNET」ログインユーザーのプロパティで表示し、左側ペインからユーザーマッピングを選ぶ。

画面下部のデータベースロールメンバシップから、db_datawriter,db_datareader,publicデータベースロールをチェックする。
この設定によって、読み取り、書き込み権限を「マシン名\ASPNET」に与えたことになる。
OKボタンを押して作業を終了する。

適切な権限が与えられてない場合は、次のようなエラーが表示されてしまう場合がある。
<blockquote>SELECT 権限がオブジェクト 'テーブル名'、データベース 'TestDB'、スキーマ 'dbo' で拒否されました。</blockquote>
このあたりの詳しい説明は「<a href="http://www.amazon.co.jp/gp/product/4891004304?ie=UTF8&tag=gon968291-22&linkCode=as2&camp=247&creative=1211&creativeASIN=4891004304">.NETエンタープライズWebアプリケーション開発技術大全〈Vol.4〉セキュアアプリケーション設計編 (マイクロソフトコンサルティングサービステクニカルリファレンスシリーズ―Microsoft.net)</a><img src="http://www.assoc-amazon.jp/e/ir?t=gon968291-22&l=as2&o=9&a=4891004304" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" />」のP88に書いてある。
<iframe src="http://rcm-jp.amazon.co.jp/e/cm?t=gon968291-22&o=9&p=8&l=as1&asins=4891004304&fc1=000000&IS2=1&lt1=_blank&m=amazon&lc1=0000FF&bc1=000000&bg1=FFFFFF&f=ifr" style="width:120px;height:240px;" scrolling="no" marginwidth="0" marginheight="0" frameborder="0"></iframe>]]></description>
         <link>http://architect360.apricot-jp.com/500tips/xxx_aspnet_1.html</link>
         <guid>http://architect360.apricot-jp.com/500tips/xxx_aspnet_1.html</guid>
                  <category domain="http://www.sixapart.com/ns/types#category">500プログラミングTips</category>
        
        
         <pubDate>Thu, 17 Sep 2009 21:35:37 +0900</pubDate>
      </item>
            <item>
         <title>Visual Studio のテキストエディタとソリューションエクスプローラを同期させる方法</title>
         <description><![CDATA[Eclipseはテキストエディタで編集中のファイルが、常にソリューションエクスプローラのツリー上でハイライトされていたことを思い出した。Visual Studioでもできないものかと調べていたところできたのでメモ。
<ol><li>[ツール]-[オプション]を選ぶ</li>
<li>オプション画面で左側のツリーで「プロジェクトおよびソリューションを選ぶ</li>
<li>「アクティブな項目をソリューションエクスプローラで選択された状態にする」をチェックする</li>
<li>OKボタンを押す</li></ol>]]></description>
         <link>http://architect360.apricot-jp.com/800tips/visual_studio_1.html</link>
         <guid>http://architect360.apricot-jp.com/800tips/visual_studio_1.html</guid>
                  <category domain="http://www.sixapart.com/ns/types#category">800開発環境・ツールTips</category>
        
        
         <pubDate>Wed, 16 Sep 2009 21:54:27 +0900</pubDate>
      </item>
            <item>
         <title>クラウド・コンピューティングと従来のASPやホスティングとの違い</title>
         <description><![CDATA[クラウド・コンピューティングとASP（Application Service Provider）やホスティングとの違いについて、「<a href="http://www.amazon.co.jp/gp/product/4492580824?ie=UTF8&tag=gon968291-22&linkCode=as2&camp=247&creative=1211&creativeASIN=4492580824">クラウドの衝撃――IT史上最大の創造的破壊が始まった</a><img src="http://www.assoc-amazon.jp/e/ir?t=gon968291-22&l=as2&o=9&a=4492580824" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" />」に理解しやすい説明があったのでメモする。この本では大きな違いが２つあると述べている。

１つは、「操作性の問題」である。以前からあるウェブアプリの多くは、画面お書き換えの多さやどう速度などの点で劣っている。クラウド以前のウェブアプリは「ローカルアプリの代替物として、ある程度我慢を強いられる」操作性であるが、クラウド的ウェブアプリは「我慢しないで使える」レベルにある。
2つ目は「目線の方向」だと言っている。クラウド・コンピューティングという言葉は、ASP、ホスティング、ブロードバンド、Ajax、無線LAN、分散コンピューティング、仮想化、SaaSなどの技術用語とは趣が違う。前者はさまざまな技術を使った「利用形態」であるの対して、後者は、どのようにシステムを構築するかという、手法の指す言葉であるためである。

<iframe src="http://rcm-jp.amazon.co.jp/e/cm?t=gon968291-22&o=9&p=8&l=as1&asins=4492580824&fc1=000000&IS2=1&lt1=_blank&m=amazon&lc1=0000FF&bc1=000000&bg1=FFFFFF&f=ifr" style="width:120px;height:240px;" scrolling="no" marginwidth="0" marginheight="0" frameborder="0"></iframe>

]]></description>
         <link>http://architect360.apricot-jp.com/900/asp.html</link>
         <guid>http://architect360.apricot-jp.com/900/asp.html</guid>
                  <category domain="http://www.sixapart.com/ns/types#category">900その他</category>
        
        
         <pubDate>Tue, 15 Sep 2009 21:43:57 +0900</pubDate>
      </item>
            <item>
         <title>Logging Application Blockのトラブルシューティング</title>
         <description><![CDATA[筆者が遭遇したEnterprise Library 4.1のLogging Application Blockのトラブルシューティングである。
<blockquote>The value can not be null or an empty string.</blockquote>
上記メッセージは、Trace ListenerのFormatterが指定されていないときに表示されるメッセージである。
Trace ListenerのFormatterに適切なFormatterが指定されていることを確認するとよい。

<blockquote>Invalid Trace ListnerData Type in configration</blockquote>
DataBase trace listenerを使用してデータベースにログを出力する際に、表示されたエラーである。
原因は参照設定の不足である。Microsoft.Practices.EnterpriseLibrary.Logging.Databaseへの参照設定を追加することで解決する。

ログが出力されない
Formatted EventLog TraceListenerを使用しイベントログへログを出力している設定で、イベントログがいっぱいでログ出力に失敗していると、他のリスナー（Database Trace Listenerなど）のログも出力されない場合がある。イベントログを消すかログのサイズを増やしておく必要がある。]]></description>
         <link>http://architect360.apricot-jp.com/500tips/logging_application_block.html</link>
         <guid>http://architect360.apricot-jp.com/500tips/logging_application_block.html</guid>
                  <category domain="http://www.sixapart.com/ns/types#category">500プログラミングTips</category>
        
        
         <pubDate>Sun, 13 Sep 2009 21:44:10 +0900</pubDate>
      </item>
            <item>
         <title>Visual Studioのテキストエディタで現在行をハイライトさせる方法</title>
         <description><![CDATA[Visual StudioでEclipseのようにテキストエディタ上で現在の行に下線を引く方法を探していたところ、「SlickEdit Gadgets」という無料のツールを見つけた。このアドインをインストールすると現在行が下線ではなく、ハイライトされるが十分使える。Visual Studio 2005と2008で使えるらしい。
<A href="http://www.slickedit.com/index.php?option=com_content&view=article&id=69&Itemid=69&filename=&type=trial&product=se&pname=SlickEdit%20for%20Windows&platform=win&ver=&64bit=" target="_blank">ここ</A>からダウンロードできる。

<IMG src="<$MTBlogURL$>img/slickedit.jpg" border="0">]]></description>
         <link>http://architect360.apricot-jp.com/800tips/visual_studio.html</link>
         <guid>http://architect360.apricot-jp.com/800tips/visual_studio.html</guid>
                  <category domain="http://www.sixapart.com/ns/types#category">800開発環境・ツールTips</category>
        
        
         <pubDate>Thu, 10 Sep 2009 21:56:00 +0900</pubDate>
      </item>
            <item>
         <title>IISのログ出力先</title>
         <description>いつもどこだったか忘れるのでメモ。IISのログ出力先は下記のフォルダである。
C:\WINDOWS\system32\LogFiles\W3SVC1
 ログを出力するには、仮想フォルダのプロパティで仮想ディレクトリタブを選び、「ログアクセス」にチェックが付いていることが必要。
</description>
         <link>http://architect360.apricot-jp.com/500tips/iis_1.html</link>
         <guid>http://architect360.apricot-jp.com/500tips/iis_1.html</guid>
                  <category domain="http://www.sixapart.com/ns/types#category">500プログラミングTips</category>
        
        
         <pubDate>Thu, 10 Sep 2009 21:42:24 +0900</pubDate>
      </item>
            <item>
         <title>変更と書き込み権限の違い</title>
         <description>Windows Server 2003では、ASP.NETの実行ユーザはNetworkServiceであるから、ログファイルを出力する際はフォルダやファイルに権限を与える必要がある。拙者がハマッてしまってしまったのは、NetworkServiceに対してログファイルの「フォルダの内容の一覧表示」、「読み取り」、「書き込み」許可権限を与えたのであるが、いざアプリケーションを実行してみるとエラーが発生し実行できない。原因は許可が足りないためであった。正しくは「変更」許可権限も与えなければならない。「変更」権限がないとファイルの追加はできるが、変更ができないことになってしまうのである。</description>
         <link>http://architect360.apricot-jp.com/800tips/post_74.html</link>
         <guid>http://architect360.apricot-jp.com/800tips/post_74.html</guid>
                  <category domain="http://www.sixapart.com/ns/types#category">800開発環境・ツールTips</category>
        
        
         <pubDate>Sun, 06 Sep 2009 18:57:48 +0900</pubDate>
      </item>
            <item>
         <title>Windows XPとWindows Server 2003のIISの動作の違い</title>
         <description>XPのIIS 5.0はローカルPCのASPNETユーザで動作している。一方2003 ServerはNetwrokServiceユーザで動作している。開発環境で正常に動いていたアプリケーションが、2003 Serverで実行できない場合は、適切な権限がフォルダやファイルに与えられているか確認するとよい。</description>
         <link>http://architect360.apricot-jp.com/800tips/windows_xpwindows_server_2003i.html</link>
         <guid>http://architect360.apricot-jp.com/800tips/windows_xpwindows_server_2003i.html</guid>
                  <category domain="http://www.sixapart.com/ns/types#category">800開発環境・ツールTips</category>
        
        
         <pubDate>Sat, 05 Sep 2009 13:19:59 +0900</pubDate>
      </item>
            <item>
         <title>このログインで要求されたデータベースXXX を開けません。ログインに失敗しました。ASPNET はログインできません</title>
         <description><![CDATA[ASP.NET Webアプリケーションから、SQL Server 2005のデータベースに接続するアプリケーションにおいて、接続の際に次のエラーメッセージが表示された。
<blockquote>このログインで要求されたデータベースXXX を開けません。ログインに失敗しました。  ASPNET はログインできません</blockquote>
接続文字列は下記のとおりで、Windows認証で接続する方法である。
<textarea name="xml" class="vb:nocontrols" cols="60" rows="10"> <add name="コネクション名" connectionString="Data Source=localhost;Initial Catalog=TestDB;Integrated Security=True;Connect Timeout=60;" providerName="System.Data.SqlClient" />
</textarea>
エラーの原因は、ASP.NETランタイムを実行しているユーザー「マシン名\ASPNET」に、TestDBデータベースへのアクセス権がないためである。解決方法には、接続文字列にユーザーとパスワードを追加しSQL Server認証で接続させる方法もあるが、ここでは接続文字列はそのままでWindows認証を使う方法を示す。つまり、SQL Serverにログインユーザに、Windowsアカウントのひとつである「マシン名\ASPNET」を追加し、TestDBへのアクセスを可能にするのである。

まず、「マシン名\ASPNET」がSQL Serverのログインできるように、ログインユーザを作る。
手順は、Management StudioでSQL Serverのインスタンスを表示し、[セキュリティ]-[ログイン]で新しいユーザを選ぶ。
ログイン名：マシン名\ASPNET
認証方法：Windows認証
次に、このマシン名\ASPNETに、TestDBへのアクセス権を与える。
手順は、「マシン名\ASPNET」ログインユーザーのプロパティで表示し、左側ペインからユーザーマッピングを選ぶ。
画面下部のデータベースロールメンバシップから、db_datawriter,db_datareader,publicデータベースロールをチェックする。
この設定によって、読み取り、書き込み権限を「マシン名\ASPNET」に与えたことになる。
OKボタンを押して作業を終了する。

適切な権限が与えられてない場合は、次のようなエラーが表示されてしまう場合がある。
<blockquote>SELECT 権限がオブジェクト 'テーブル名'、データベース 'TestDB'、スキーマ 'dbo' で拒否されました。</blockquote>
]]></description>
         <link>http://architect360.apricot-jp.com/500tips/xxx_aspnet.html</link>
         <guid>http://architect360.apricot-jp.com/500tips/xxx_aspnet.html</guid>
                  <category domain="http://www.sixapart.com/ns/types#category">500プログラミングTips</category>
        
        
         <pubDate>Wed, 02 Sep 2009 22:32:51 +0900</pubDate>
      </item>
      
   </channel>
</rss>

