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);
	        }