ASPの旧覚書
■タグ入力を許可する。例「<a>」
以下の入力のバグ対策です。
「"><script>alert('hoge')</script>」
JikoReport.aspxの「<%@ Page...」タグに「ValidateRequest="false"」を追加すると登録可能になります。
変更前
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="JikoReport.aspx.cs" Inherits="mob.jiko.JikoReport" %>
変更後
<%@ Page Language="C#" AutoEventWireup="true" ValidateRequest="false" CodeBehind="JikoReport.aspx.cs" Inherits="mob.jiko.JikoReport" %>
■カレントパスを取得。「../」を指定した場合、1つ上のフォルダ。
string path=HttpContext.Current.Server.MapPath("../");
■web.configに独自設定値を定義する。
◇web.config
<configuration>
<appSettings>
<add key="SampleDataMode" value="1" />
</appSettings>
</configuration>
◇クライアントクラス。
string xxx = System.Configuration.ConfigurationManager.AppSettings["SampleDataMode"];
※web.configに存在しない設定値を取得する場合、nullが取得される。
■URLエンコードとデコード
//URL エンコードする
string encodeStr = System.Web.HttpUtility.UrlEncode(str);
// URL デコードする
string decodeStr = System.Web.HttpUtility.UrlDecode(encodeStr);
■ファイル削除
File.Delete(fileName);
■ファイルアップロード&保存
http://www.ipentec.com/document/document.aspx?page=csharp-asp-net-create-generic-handler-to-get-form-file&culture=ja-jp
■配列のPOSTデータを受け取る。
string[] fnFiles = Request.Form.GetValues("ary[]");
■HTMLへ書き出し。
Response.Write("<strong>test</strong>");
■クロスドメイン通信を許可
Response.AppendHeader("Access-Control-Allow-Origin", "*");//クロスドメイン通信を許可する。
■ASP.NET | WebService(asmx)の外部アクセスを許可する
<system.web>
・・・
<!-- ↓system.web内に以下を追加 -->
<webServices>
<protocols>
<add name="HttpGet"/><!-- getを許可する場合 -->
<add name="HttpPost"/><!-- postを許可する場合 -->
</protocols>
</webServices>
<!-- ↑ここまで -->
</system.web>
参考URL:http://ortk.main.jp/blog/?p=554
■URLデコードを行う。
// URL デコードを行う
name = Server.UrlDecode(name);
■相対パスを取得
Uri root = new Uri(Server.MapPath("."));
string loacalPath=root.LocalPath;
//path=file:///C:/web/asp/hogehoge
//loacalPath=C:¥web¥asp¥Test2¥Test2
■データベースの作成
APP_Dataフォルダを右クリック⇒
新しい項目の追加をクリック⇒
「インストールされたテンプレート一覧」の一覧からデータを選択。
画面右側でSQL Server データベースを選択して追加ボタンを押す。
ソリューションエクスプローラのApp_DataにDatabase1.mdfが追加されていればOK.
■ファイルアップロード&保存
if (FileUpload1.HasFile)
{
//カレントディレクトリを取得する。
Uri url = new Uri(Server.MapPath("."));
string path = url.LocalPath;
//ファイル名を取得する。
string fileName = FileUpload1.PostedFile.FileName;
fileName = "123" + fileName;//ファイル名を変更。
string fullFileName = Path.Combine(path, fileName);
//☆ファイルを保存する。
FileUpload1.SaveAs(fullFileName);
}
■ファイルアップロード&ダウンロード
protected void Button1_Click(object sender, EventArgs e)
{
// ファイルがアップロードされていなければリターン
if (FileUpload1.HasFile == false) { return; }
// 一時ファイルに保存
string fpath = Path.GetTempFileName();
FileUpload1.SaveAs(fpath);
// レスポンスを作成して返す(アップロードされたファイルをそのままダウンロード)
HttpResponse resp = HttpContext.Current.Response;
resp.Clear();
resp.ContentType = FileUpload1.PostedFile.ContentType; // コンテントタイプ
resp.AddHeader("Content-Disposition", "attachment; filename=" + HttpUtility.UrlEncode(FileUpload1.FileName));
resp.WriteFile(fpath);
resp.Flush();
// 一時ファイルを削除
File.Delete(fpath);
}