/ 流通システム部
Tweet
シェア
システム開発ブログ
最近の記事
- Chrome for Androidの新機能、Chrome to Mobileを試す
- ファイルサーバのBCP対策(アイロベックスの場合)
- Illustratorの矢印機能でラクラク矢印作成!
- システム会社選びのポイント
- システム保守の移管費用を抑えます
- アイロベックス通信発行してます
- ボタンのデザインをxmlで定義する
- Excel2010で行コピーをした場合に、画像ファイルのサイズが変わらないようにする
- Power Point2010 でスライド番号をつける方法
- Photoshop の秘宝
カテゴリー
- HTML全般 (2)
- Access (15)
- Android (5)
- .NET (14)
- Excel (9)
- Google Apps (5)
- HTML5 (3)
- iPhone (8)
- JAVA (14)
- Linux (7)
- Movable Type (15)
- MySQL (7)
- OpenOffice (10)
- Oracle (6)
- PHP (20)
- SQLServer (4)
- twitter (6)
- VBA (11)
- Webサイト構築・Web戦略 (32)
- Webサイト構築事例 (4)
- Windows (10)
- その他 (29)
- アクセス解析 (2)
- ウィジェット (1)
- システム設計 (5)
- システム開発事例 (3)
- システム開発体制 (1)
- セキュリティ (5)
- データベース (20)
- プロジェクト管理 (8)
- 品質管理・テスト (6)
- 帳票 (3)
- 技術活用 (6)
- 運用・保守 (8)
部署
- システム開発事業部 (33)
- ビジネスソリューション課 (17)
- システムソリューション事業部 (32)
- 流通システム部 (76)
- 産業システム部 (93)
- ソフトウエア開発部 (56)
- Webコンサルティング部 (97)
- 企画開発部 (37)
- 部長インタビュー (3)
月別アーカイブ
- 2012年2月 (6)
- 2012年1月 (18)
- 2011年12月 (19)
- 2011年11月 (22)
- 2011年10月 (29)
- 2011年9月 (28)
- 2011年8月 (5)
- 2011年7月 (18)
- 2011年6月 (15)
- 2011年5月 (21)
- 2011年4月 (8)
- 2011年3月 (12)
- 2011年2月 (12)
- 2011年1月 (13)
- 2010年12月 (18)
- 2010年11月 (19)
- 2010年10月 (19)
- 2010年9月 (21)
- 2010年8月 (17)
- 2010年7月 (21)
- 2010年6月 (22)
- 2010年5月 (14)
- 2010年4月 (12)
- 2010年3月 (13)
- 2010年2月 (9)
- 2010年1月 (12)
- 2009年12月 (7)
- 2009年11月 (6)
- 2009年10月 (8)
- 2009年9月 (7)
- 2009年8月 (3)
- 2009年7月 (1)
- 2009年6月 (3)
- 2009年5月 (1)
- 2009年4月 (1)
- 2009年3月 (8)
- 2009年2月 (10)
- 2009年1月 (1)
- 2008年12月 (1)






流通システム部 / .NET
今回はASP.NETで拡張子のマッピングを行う方法を紹介します。
Javaでいうところのサーブレットマッピングを、ASP.NETで実現するための方法です。
ASP.NETで拡張子のマッピングを行うには、IISとWebアプリケーションの両方で設定が必要になります。
今回はサンプルとして「.xls」の拡張子に対してマッピングを行いたいと思います。
まずはWebアプリケーションを作成し、仮想ディレクトリの設定を行います。
[管理ツール]→[インターネットインフォメーションサービス]で仮想ディレクトリのプロパティを表示します。
[仮想ディレクトリ]→[構成]→[マッピング]→[追加]でマッピングしたい拡張子を追加します。
それぞれの設定は以下のようにします。
[実行ファイル]→aspx等の拡張子に設定されている「aspnet_isapi.dll」のパスを設定します。
[拡張子]→.xls
[動詞]→制限:GET,HEAD,POST,DEBUG
[スクリプトエンジン]→チェックあり
[ファイルの存在を確認する]→チェックなし
以上のように設定することで、ASP.NETのアプリケーションで「.xls」の拡張子が処理されるようになります。
次は実際にリクエストを処理するクラスを作成します。
.NETFramework2.0の場合、aspxなどのプログラム以外のファイルは「System.Web.DefaultHttpHandler」クラスによって処理されるので、
今回のサンプルでは上記のクラスを継承したサブクラスを作成します。
※.NETFramework1.1の場合は「System.Web.StaticFileHandler」クラスによって処理されます。
以下はサンプルのクラスです。
Public Class MappingSampleClass Inherits System.Web.DefaultHttpHandler '''
''' BeginProcessRequestをオーバーライドします。
'''
Public Overrides Function BeginProcessRequest( _
ByVal context As System.Web.HttpContext, _
ByVal callback As System.AsyncCallback, _
ByVal state As Object) As System.IAsyncResult
Dim sUrl As String = context.Request.RawUrl
'ファイル名に「restrict」という文字列が含まれる場合はアクセス禁止とする。
If sUrl.Contains("restrict") Then
Throw New Exception("アクセス禁止!!")
End If
Return MyBase.BeginProcessRequest(context, callback, state)
End Function
End Class
最後はWeb.configの設定を行い、拡張子とクラスのマッピングを行います。Web.configのsystem.webセクションに以下を追加します。
「type」には「完全クラス名, アセンブリ名」を指定します。
詳しくは以下を参照して下さい。
http://msdn.microsoft.com/ja-jp/library/cc433424(v=VS.71).aspx
以上で「.xls」の拡張子がMappingSampleClassクラスで処理されるようになります。
以下は動作確認のためのaspxのサンプルです。
<%@ Page Language="vb" AutoEventWireup="false" CodeBehind="Default.aspx.vb" Inherits="MappingSample._Default" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <title></title> </head> <body></body> </html> アプリケーションのルートに「Book1.xls」「restrict1.xls」の2つのxlsファイルを配置して実行すると、「restrict1.xls」を押下した場合にはファイルのダウンロードが行われずに、エラーページに遷移します。
今回のサンプルはxlsですが、xlsのみならず静的なファイルに対して、
アプリケーション独自のアクセス制限をかけたい場合に有効かもしれませんね。
ちなみにですが、VisualStudio2005以降に付属の開発サーバを使用した場合には、IISの設定は必要なくWeb.configの設定のみで動作します。
「システム開発ブログ」へのコメントやご意見等ありましたら、ファンページまでお願いします。 Facebook のファンページ
他社のシステムも直します。資産を活かしてシステムリフォーム