Web リソースでは、ASP.NET 2.0 を使用します。

サポートが終了した KB の内容についての免責事項

この記事は、マイクロソフトがサポートを提供しなくなった製品について記述しています。 したがって、この記事は「現状のまま」で提供され、更新されることはありません。

ASP.NET サポート音声列

Web リソースでは、ASP.NET 2.0 を使用します。

お客様のニーズには、この列をカスタマイズするには、サポート技術情報とサポート音声列にして表示する問題に関心のあるトピックに関するアイデアが将来的にアドレスを送信することを招待します。アイデアとそれの要求フォームを使用してフィードバックを送信できます。この列の下部にあるフォームへのリンクもあります。

概要

こんにちは!Praveen Yerneni は、私はマイクロソフトでは、ASP.NET のサポート グループを使用する技術の潜在顧客です。今月のコラムでは、Web リソース、およびそれらをアプリケーションに実装する方法について説明するつもりです。

COM コントロールを多用する開発者の場合は、便利この資料内のコントロールを開発する際に直面する可能性があります主要な問題のいくつかのアドレスを指定します。以前は、Microsoft ASP.NET 1.1 では、COM コントロールを使用して、.html ファイル、.css ファイル、イメージ ファイル、およびスクリプト ファイルなどの静的ファイルを配置する場合はする必要がある、インストーラーを作成し、COM コントロールと共にこれらのファイルをバンドルします。次のとおりですが、コントロールを配置するときに多くの問題が表示されます。などの可能性があります問題があるバージョンの競合、イメージなどのファイルが同じ場所に展開されたことを確認または操作が失敗を引き起こす可能性がある静的なファイルを破損または削除されたとします。

Microsoft ASP.NET 2.0 の web リソースは、.resources とアセンブリにこれらのリソースを埋め込む開発することで、こうした問題を解決します。これらの静的なリソースにアクセスするには、コントロールのコードにだけメソッドを呼び出すことができます。

Web リソースがどのように動作するか

Web リソースは、アセンブリのリソースを取得し、Web ブラウザーに提供するよう設計されている WebResource.axd という特殊なハンドラーに依存します。WebResource.axd のハンドラーの型は、 AssemblyResourceLoaderです。

WebResource.axd のクライアントから要求を受け取ったときにハンドラーは、クエリ文字列オブジェクトのメソッドの要求で Web リソースの識別子を検索します。Web リソース識別子の値に基づいて、ハンドラーを試みますこのリソースを含むアセンブリを読み込めません。この操作が成功した場合は、ハンドラーがアセンブリ属性を検索し、アセンブリからリソース ストリームを読み込みします。最後に、ハンドラーはリソース ストリームからデータを取得し、アセンブリの属性で指定したコンテンツ タイプと共にクライアントに送信します。

WebResource.axd の URL は、次のようになります。
WebResource.axd?d=SbXSD3uTnhYsK4gMD8fL84_mHPC5jJ7lfdnr1_WtsftZiUOZ6IXYG8QCXW86UizF0&t=632768953157700078
この URL の形式は、暗号化された識別子の WebResource.axd?d= & t =タイムスタンプ値です。"D"は、要求された Web リソースを意味します。"T"は、リソースへの変更があった場合を決定することができますが、要求されたアセンブリのタイムスタンプです。

コードを詳しく

私の例では、この新しい機能を示すために ASP.NET Web アプリケーションによって消費される COM コントロールを開発しました。

Web リソースの COM コントロール

作成すると、Web リソースを埋め込む、COM コントロール (SimpleControl) を開発しました。次の埋め込みリソースがあります。
  • 2 つのイメージ ファイルの名前は smallFail.gif と smallSuccess.gif をします。これらのイメージ ファイルは、コントロールにロール オーバー効果に使用され、コントロールのコード内で消費されます。
  • Help.htm という HTML ファイルです。このファイルは、多くの文字列が含まれていない、デモのためだけです。
  • MyScript.js という 1 つの JavaScript ファイルです。このファイルには、同じアセンブリ内の別の埋め込みリソースへの参照を取得する代替機能も示しているいくつかの JavaScript コードが含まれています。
  • MyStyleSheet.css という 1 つの .css ファイルです。このスタイル シートは、ASP.NET Web アプリケーションから直接、消費されます。
この記事では、Web リソースに必要な部分を説明します。
Web リソースを埋め込む
最初に、Microsoft Visual Studio 2005 で Web コントロール ライブラリ プロジェクトに追加されているすべての静的ファイルが埋め込みリソースであることを確認する必要があります。これらのリソースを埋め込むには、これらのファイルを Visual Studio に追加し、ビルド アクションは、埋め込みリソースに設定されているため、これらのファイルのプロパティを変更を行う必要があるが。

設定が終了した後も、これらのリソースが AssemblyInfo.cs ファイルを次に示すようにweb リソース検索のアセンブリの属性によって参照されているかどうかを確認する必要があります。
[assembly: WebResource("SimpleControl.Help.htm", "text/html")][assembly: WebResource("SimpleControl.MyStyleSheet.css", "text/css")]
[assembly: WebResource("SimpleControl.smallFail.gif", "image/gif")]
[assembly: WebResource("SimpleControl.smallSuccess.gif", "image/gif")]
[assembly: WebResource("SimpleControl.MyScript.js", "text/javascript", PerformSubstitution = true)]


Web リソース検索のアセンブリの属性では、次のように 3 つのパラメーターがあります。
  • Web リソース: アセンブリに埋め込まれているリソースの名前
  • コンテンツ タイプ: リソースの [MIME ファイルの種類
  • PerformSubstitution: このリソースで参照されているその他の Web リソースの Url が解析され、リソースの完全パスで置き換えられますかどうかを決定するブール値
Web リソースを取得します。
Web リソースを取得するには、通常、クライアント側スクリプトの管理に使用されるClientScriptManagerクラスのメソッドでは、 GetWebResourceUrlメソッドを使用しました。このメソッドは、アセンブリに埋め込まれているサーバー側リソースへの URL 参照を返します。GetWebResourceUrlメソッドは、次の 2 つのパラメーターを受け付けます。
  • 種類: サーバー側リソースの種類
  • リソース名: サーバー側リソースの名前
このメソッドを使用して、最初に [ ClientScriptManagerクラスのインスタンスを作成し、次のように、クラスの型を取得する必要があります。
ClientScriptManager cs = Page.ClientScript;            Type rsType = this.GetType();


このクラスのインスタンスがある場合は、このメソッドを呼び出すと、[ハイパーリンク] ボタンを作成する次のように適切なパラメーターを渡すし、埋め込みの HTML リソースを指すようにNavigateURLの方法を設定する必要があります。
HyperLink hlHelpFile = new HyperLink();            hlHelpFile.NavigateUrl = cs.GetWebResourceUrl(rsType, "SimpleControl.Help.htm");
hlHelpFile.Attributes.Add("onmouseover", "ChangeImage('image1','Red')");
hlHelpFile.Attributes.Add("onmouseout", "RollbackImage('image1','Green')");

this.Controls.Add(hlHelpFile);

Image imgTest = new Image();
imgTest.ImageUrl = cs.GetWebResourceUrl(rsType, "SimpleControl.smallFail.gif");
imgTest.ID = "image1";
hlHelpFile.Controls.Add(imgTest);


一覧の上の同じコードで作成したイメージボタンとImageUrl属性が別の埋め込みの .gif イメージ リソースからの値を取得します。
置換機能を使用します。
Web リソースを使用するもう 1 つの便利な機能は、上記の埋め込みの Web リソース」セクションに示すように、 web リソース検索属性のPerformSubstitutionプロパティです。この機能では、実際には別の埋め込みリソース内の Web リソースを取得することができます。このプロパティが有効な場合、 web リソース検索ハンドラーが埋め込まれたリソースが解析され、ページを処理する前にweb リソース検索のアセンブリ属性の構文を実際のリソースで置き換えます。

上記のコードでは、ハイパーリンクコントロールでは、 ChangeImageというクライアント側のイベントを持っていることがわかります。このChangeImage関数は、スクリプト ファイルに格納されます。このスクリプトのコードを次に示します。
function ChangeImage(imgControl,varcolor){   document.getElementById(imgControl).src = '<%= WebResource("SimpleControl.smallSuccess.gif")%>';
document.getElementById('Label1').style.color = varcolor;
}

function RollbackImage(imgControl, varcolor){
document.getElementById(imgControl).src = '<%= WebResource("SimpleControl.smallFail.gif")%>';
document.getElementById('Label1').style.color = varcolor;
}

MyScript.js という名前のスクリプト ファイルは、同じ COM コントロール内の埋め込みリソースをもできます。スクリプト ファイル内の別の埋め込みリソースを参照するweb リソース検索メソッドを使用することを確認してください。

また、この JavaScript ファイルがページに登録されていることを確認するメソッドを使用RegisterClientScriptInclude ClientScriptManagerクラスの次のようにします。
cs.RegisterClientScriptInclude("MyScript", cs.GetWebResourceUrl(rsType, "SimpleControl.MyScript.js"));

ASP.NET 内のコントロールの使用

COM コントロールが正常に作成している場合は、クライアント ASP.NET プロジェクトでは、このコントロールを使用する必要があります。これを行うには、だけで、ASP.NET のツールボックスにコントロールを追加するのにはあります。デザイナー内の任意の Web フォームにコントロールを追加することができます。

ツールボックスにコントロールを追加するときのコントロールの登録を行ったし、HTML の構文を確認するときに次のコードが追加されます。
<cc1:MSButton ID="MSButton1" runat="server" strText="Problems?"></cc1:MSButton>
コントロールでは、COM、私がも埋め込まれているスタイル シート ファイル、ASP.NET アプリケーションで使用されます。このスタイル シートにアクセスするには、 HtmlControlのリンクを HTML ページに追加し、次のように、サーバーrunatプロパティを設定する必要があります。
<link rel="Stylesheet"  id="lnkStyle" runat="server"  />
その後、次のように、 Page_Loadイベントでweb リソース検索のアセンブリの属性をポイントするには、このコントロールのHref属性をプログラムで設定できます。
protected void Page_Load(object sender, EventArgs e)    {
//Get the name of the Web Resource.
String rsname = "SimpleControl.MyStyleSheet.css";

//Get the type of the class.
Type rstype = typeof(SimpleControl.MSButton);

// Get a ClientScriptManager reference from the Page class.
ClientScriptManager cs = Page.ClientScript;
lnkStyle.Href = cs.GetWebResourceUrl(rstype, rsname);
}


コードを実行するときは、次のような外観のコントロールが表示されます。
 small fail
マウス ポインターを上、コントロールは次のようになります。
 small success
このリンクをクリックしたときにかかるヘルプ ページには、COM コントロールのアセンブリ ファイルに埋め込まれています。

まとめ

Web リソースは、ASP.NET 2.0 の新機能で便利です。慎重に使用する場合をうまく活用するこの機能を使用することができます。Web リソースが、アプリケーションのパフォーマンスに影響しないことを確認するには、多くのキャッシュ技術を使用されています。

ASP.NET 2.0 は、WebResource.axd は、埋め込みリソースを取得するために、Microsoft.NET Framework によって内部的に使用します。など、.NET Framework は、検証コントロールを使用する WebUIValidation.js スクリプト ファイルを取得して、Menu.js 用のスクリプト ファイル] メニューの [コントロールを取得するために、WebResource.axd を使用します。

関連情報

詳細については、次のマイクロソフト Web サイトを参照してください。
常に、お気軽に目的のトピックに関するアイデアを送信するアドレス指定、将来の列、または、サポート技術情報を使用して、
それの質問のフォームです。
プロパティ

文書番号:910442 - 最終更新日: 2017/02/02 - リビジョン: 1

Microsoft ASP.NET 2.0

フィードバック