アプリケーショントレース
web.configファイルを修正することで、アプリケーションのトレースを有効にできる。
<configuration> <system.web> <trace enabled="true" requestLimit="10" pageOutput="false" traceMode="SortByTime" localOnly="true"> </system.web> </configuration>
リクエストの保存
HttpRequestクラスにはSaveAsメソッドが用意されている。
このメソッドを
Request.SaveAs("c:??debug.txt", true);
のように呼び出せば、以下のようにクライアントから送られてきたリクエストを生の状態でファイルに保存できる。
POST /aspnet/Request/hoge03.aspx HTTP/1.1
Cache-Control: no-cache
Connection: Keep-Alive
Content-Length: 153
.
.
__VIEWSTATE=dDwyMDA1MzM2OTYxOzs%2BKFxIkT0e9AQPgtAR8MNLbB0jNGI%3D&t1=%E3%81%82%&_ctl1=Submit
ファイルのアップロード
ASP.NETでファイルのアップロードに成功しました。
PostingAcceptorやWebDAVと比べて、格段に使いやすくなっています。
aspxファイル
<html> <body> <form id="Form1" method="post" runat="server" enctype="multipart/form-data"> <asp:Label id="Label1" runat="server">ステータス</asp:Label></br> 添付ファイルの選択:<INPUT type="file" id="File1" name="File1" runat="server"></br> 保存時のファイル名:<asp:TextBox id="TextBox1" runat="server"></asp:TextBox></br> <asp:Button id="Button1" runat="server" Text="ファイルの追加"></asp:Button></br> </form> </body> </html>
aspx.vbファイル
Private Sub Button1_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles Button1.Click Dim LstrTempFolderName As String = "C:?Inetpub?wwwroot?Upload?" If TextBox1.Text = "" Then Label1.Text = "ファイル名を入力してください" Else If Not (File1.PostedFile Is Nothing) Then Try File1.PostedFile.SaveAs((LstrTempFolderName & TextBox1.Text)) Label1.Text = "アップロード成功!<b>" & LstrTempFolderName _ & TextBox1.Text & "</b>" Catch exc As Exception Label1.Text = "アップロード失敗!<b>" & LstrTempFolderName _ & TextBox1.Text & "</b><br>" & exc.ToString() End Try TextBox1.Text = "" End If End If End Sub
文字コード
ASP.NETでは、通常UTF-8エンコードされたページが出力されるが、入力データについてはUTF-8であるとは限らない。ASP.NETページに渡すクエリ文字列は、UTF-8エンコードされていなければならない。全てのページがASP.NETページなら、文字コードは自動的にUTF-8で統一されるが、HTMLファイルが混ざると気をつける必要がある。
例えば、シフトJISでデザインされたWebページから、シフトJISでエンコードされたクエリ文字列が渡されると、ASP.NETページはこれをUTF-8だと誤解して受け取ってしまうため、文字化けが発生する。
web.configを編集することで、ASP.NETのデフォルトエンコードをUTF-8からシフトJISに変更するできる。
カスタムデザイナーのTP
17日に掲載したコードを実行するとこの画像のようになります。