Classic ASPとASP.Net 1.1コードの両方を含むプロジェクトで接続文字列を管理する最良の方法は?
-
05-07-2019 - |
質問
私が継承したプロジェクトは、主にクラシックASPアプリケーションです。ただし、アプリケーションに混在するASP.netページはほんの一握りです。 ASP.netページの一部は1.1であり、コードビハインドモデルを使用していません。
従来のASPページには、データベース接続用のファイルがある/ includeディレクトリが多数あります。 ASP.Netページのコードには、接続文字列がハードコードされています。
この接続文字列の混乱をクリーンアップして、開発環境全体で管理しやすくするようにしています。
Classic ASPページとASP.Netページの両方で機能する、これを効果的に行う方法に関する推奨事項はありますか?
ありがとう
解決
asp.classicサイトのルートにweb.configファイルを配置します。コードビハインドのないASP.netページ(およびどこにも仮想ディレクトリ/アプリケーションがないと想定)は、そのweb.configファイルを使用します。そこに接続文字列を配置できます。おそらく、2組の文字列を持つことになりますが、それは他の多くの文字列よりも優れています。本当に必要な場合は、aspクラシックコードを作成して、その構成ファイルを読み取ることができます。
他のヒント
この方法は、ソースコードバージョン管理システム(svnなど)のwebrootから接続文字列ファイルを分離することに焦点を当てています。
ファイル:
c:\inetpub\config\config.xml
c:\inetpub\wwwroot\global.asa
c:\inetpub\wwwroot\onInit.asp
config.xml:
<?xml version="1.0" encoding="utf-8" ?>
<root>
<database
ip="XXXX"
catalog="XXXX"
id="XXXX"
password="XXXX"
/>
</root>
global.asa:
<script runat="Server" language="VBScript">
Sub Application_OnStart()
server.execute("/onInit.asp")
End Sub
Sub Application_OnEnd()
End Sub
</script>
onInit.asp:
<%
dim xmlDoc, xmlPath, objNodes
set xmlDoc = server.CreateObject("microsoft.xmldom")
xmlDoc.async = false
xmlPath = Server.MapPath("/")
xmlPath = left(xmlPath, inStrRev(xmlPath, "\")) & "config\config.xml"
xmlDoc.load xmlPath
set objNodes = xmlDoc.selectNodes("//database")
application("connectionString") = "Provider=SQLOLEDB.1;Persist Security Info=True;"_
& "Data Source=" & objNodes.item(0).getAttribute("ip") & ";"_
& "Initial Catalog=" & objNodes.item(0).getAttribute("catalog") & ";"_
& "User ID=" & objNodes.item(0).getAttribute("id") & ";"_
& "Password=" & objNodes.item(0).getAttribute("password")
set objNodes = nothing
set xmlDoc = nothing
%>
うーん。このような混乱を片付けるのは私だけではないと思います。
あなたにとって有用な非常にの答えはありませんが、ここに私たちが考案した戦略があります。それはあなたの質問を超えていますが、うまくいけば、あなたがまだ尋ねるとは思わなかった質問に答えます。あなたの前のタスクは巨大であり、接続文字列だけでなく、プロセス全体でできる限り多くのヒントを提供したいと思います。
- ソースコードを完全に再編成します
- ウェブ上のファイル構造を完全に再編成します
- コードを修正する必要がある場合は修正する。大きなプロジェクトとして一度にすべてを実行するのではなく、
- 従来のaspをasp.netに変換することを明確な目的にします((より迅速な開発/保守によりプロジェクトを省力化することで、マネージャーから賛同を得ました)
- 接続文字列、共通ファイル、共有CSSファイルなどを保存するための標準を作成および文書化した。
- 再編成の一環として、どのプロジェクトからでも参照できるグローバル共有フォルダーがあります。これには、複数の個々のプロジェクトWebサイトなどで使用される共通の画像、CSSなどが含まれます。
- また、すべてのWebサイトに、CSS、スクリプト、およびimgサブフォルダーを含む共通フォルダーがあり、作業対象のすべてのプロジェクトに一貫性があるように指定しました。
- 最初のWebアプリの書き換えが完了したら、プロジェクトテンプレートを作成して、新しいWebサイトプロジェクトを非常に簡単に開始できるようにしました。
これまでに行ったすべての作業の副作用として、変換ウィザードを使用するだけで、Visual Studioで2つのアップグレードを非常に簡単に実行できました。 VS 2003からVS 2005に移動してからVS2008に移動するのは簡単でした。
また、ソース管理の選択は、混乱の修正方法に基づいて行われました。 TFSを使用していましたが、TFSプロジェクトとVSソリューションの関係によって制限されていました。 Subversionを使用するとTFSよりも高い柔軟性が得られるため、ソースコードのディレクトリ構造をTFSが許可するよりもはるかに管理しやすい方法でレイアウトできることがわかりました。