Windows Vista RTM での APPL_PHYSICAL_PATH サーバー変数
作成者: Robert McMurray
Windows Vista に付属していた IIS 7.0 の元のリリースでは、APPL_PHYSICAL_PATH サーバー変数の値に対して、以前または以降のバージョンの IIS から返されたものとは異なる値が返されました。 以前のバージョンの IIS では、このサーバー変数にはパスに円記号 "" 文字が付加されていましたが、Windows Vista の元のリリース バージョンでは、このサーバー変数にはパスのみが含まれていました。 これは、Windows Vista Service Pack 1 (SP1) および Windows Server 2008 の元のリリース バージョンで修正されました。
つまり、従来の ASP 開発者で、元のリリース バージョンの Windows Vista のパスを計算するために APPL_PHYSICAL_PATH サーバー変数の値を使用している場合は、ASP コードでは、そのアプリケーションを別のコンピューターに移行する前に、不足している円記号を考慮する必要があります。
たとえば、次の ASP コードは、現在のアプリケーションの App_Data フォルダー内の Microsoft Access データベースの場所を計算します。
strCN = "DRIVER={Microsoft Access Driver (*.mdb)};" & _
"DBQ=" & Request.ServerVariables("APPL_PHYSICAL_PATH") & _
"App_Data\example.mdb"
Set objCN = Server.CreateObject("ADODB.Connection")
objCN.Open strCN
IIS 5.1 を使用する Windows XP コンピューターでこのコードをテストしていた場合、このコードは正常に機能していました。 ただし、コンピューターを Windows Vista の元のリリース バージョンにアップグレードした場合、データベースのパスは無効になり、データベースへの接続は失敗します。 たとえば、ASP コードが既定の Web サイトのルート フォルダー内のページにある場合、計算された接続文字列の内容は次のようになります。
DRIVER={Microsoft Access Driver (*.mdb)};DBQ=C:\inetpub\wwwrootApp_Data\example.mdb
ブラウザーにエラーを送信するように ASP が構成されている場合は、次のエラーが表示されます。
Microsoft OLE DB Provider for ODBC Drivers error '80004005'
[Microsoft][ODBC Microsoft Access Driver] Disk or network error.
/example.asp, line 100
Windows Vista のこの問題を解決するには、Windows Vista SP1 をインストールするか、ASP コードで円記号を手動で確認し、必要に応じて円記号を追加することができます。 次に例を示します。
strAP = Request.ServerVariables("APPL_PHYSICAL_PATH")
If Right(strAP,1)<>"\" Then strAP = strAP & "\"
strCN = "DRIVER={Microsoft Access Driver (*.mdb)};" & _
"DBQ=" & strAP & "App_Data\example.mdb"
Set objCN = Server.CreateObject("ADODB.Connection")
objCN.Open strCN
その他の情報
IIS サーバー変数の詳細については、Microsoft MSDN Web サイトにある次のページを参照してください。
IIS Server Variables
https://msdn.microsoft.com/library/ms524602.aspx
フィードバック
https://aka.ms/ContentUserFeedback」を参照してください。
以下は間もなく提供いたします。2024 年を通じて、コンテンツのフィードバック メカニズムとして GitHub の issue を段階的に廃止し、新しいフィードバック システムに置き換えます。 詳細については、「フィードバックの送信と表示