アプリケーショントレース
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日に掲載したコードを実行するとこの画像のようになります。

