顯示具有 ASP NET 3.5 教學 標籤的文章。 顯示所有文章
顯示具有 ASP NET 3.5 教學 標籤的文章。 顯示所有文章

2015年12月9日 星期三

【資訊安全】IIS 8.5 Header 標頭 隱藏 & asp.net 處理

Server (值:Server: Microsoft-IIS/8. X-AspNet-Version)
(檔案:Global.asax)
Response.Headers.Remove("Server");


X-AspNet-Version (值:4.0.303319)
(檔案:web.config 說明:取得或設定值,指出 ASP.NET 是否應輸出版本標頭)
設定:

(或)or
也可在 Global.asax Response.Headers.Remove("X-AspNet-Version");

X-Powered-By(值:ASP.NET)
(檔案:Global.asax)
 

參考網址:http://kevintsengtw.blogspot.tw/2014/02/aspnet-mvc-response-headers.html

2015/12/24 重新記載:在IIS 中安裝 URL Rewrite Module 才是最簡單的方式

因為Server header 我怎麼做都移不掉,我是透過 rewrite Module 處理

簡單說明:http://www.henrylee.link/2015/09/10/how-to-remove-all-information-about-iis-server-from-response-header/

相關參考:https://blog.johnwu.cc/article/asp-net-optimized-setting.html
web.config
<rewrite>
            <outboundRules>
                <rule name="Strip Headers">
                    <match serverVariable="RESPONSE_SERVER" pattern=".*" />
                    <action type="Rewrite" value="MyServer" replace="true" />
                    <conditions>
                    </conditions>
                </rule>
            </outboundRules>
        </rewrite>

另外,若您的 IIS 設定  整合性 它只會認web.config  system.webServer 區域的 module 設定

要注意

2013年6月20日 星期四

【ASP.NET】ASP.NET 超過 1,000 個欄位 出現問題:由於該物件目前的狀態,導致作業無效 (解決方式)

問題:由於該物件目前的狀態,導致作業無效
Framework 預需限制 1000個欄位,
若超出預設,就會出現問題,連觸發也不給觸發
就請用以下解決方式試試~應該就可以解決了

解決方法
web.config
 aspnet:MaxHttpCollectionKeys 設定:

 
key="aspnet:MaxHttpCollectionKeys" value="2500" />



以下是Framework 2.0  錯誤訊息



以下是Framework 4.0  錯誤訊息

2012年12月5日 星期三

【ASP.NET 教學】(二)TransactionScope mdts 錯誤 PS.Web.Config 問題 (鬼打牆)


繼第一篇延續


後來追查到 web.config 設定

結果把A1ConnectionString 的connectionString 後半段內容複製
貼到 A2ConnectionString 的connectionString  後面

結果就能Run了

如果兩個connectionString  其中有一點點不一樣,就會又出現MDTS未啟用狀態 錯誤

=.=真的翻書也沒找到的解答

更新:add name="xxxConnectionString"



原:

改為:


說明:與add name="ConnString"  相同設定,避免TransactionScope 出現錯誤MDTS未啟用狀態


很神的是,我本機兩個混著用都沒問題=.=",上傳到server 就出現錯誤
【搞什麼東西】

【ASP.NET 教學】(一)TransactionScope mdts 錯誤 (鬼打牆)

今天花了一整個晚上搞個  TransactionScope
TransactionScope SqlConnection 只能相同 連結使用

之前程式高手在類別裡面有寫 回傳DATATABLE  FUNCTION
但設定的 SqlConnection  ConnectionStrings設定名稱: Conn1

然後我在我自己的程式裡寫了一個
TransactionScope
裡面
有個SqlDataSource 但設定的 SqlConnection  ConnectionStrings 設定:  Conn2

這兩個都是連同的DB

結果執行都還沒到Scope.Complete();
就出現錯誤
已停用分散式交易管理員(MSDTC)的網路存取。請使用元件服務系統管理工具啟用DTC,以使用MSDTC安全性設定中的網路存取

我還以為是我DDL 沒開啟,還是說防火牆被擋,
然後我都全部打開=.="
依然沒效(花了快8個小時測試)

結果我放棄用高手寫的(DATATABLE  FUNCTION 回傳 ), 改用 SqlDataSource  控制項 設定連結也是用 Conn2
結果他就通了,就沒出現MSDTC 錯誤訊息

後來我改 回傳DATATABLE  FUNCTION  裡面的 SqlConnection 也改成 Conn2
也也也也成功了

不知道是不是 TransactionScope  只能在同一條 SqlConnection  ConnectionStrings 操作=.="

我發佈是到 WINDOWS 2008 R2  && SQL 2008 STANDER版

我在本機原本照舊的程式碼測試都沒問題,結果發佈到遠端就出現錯誤=.="

搞了我那麼久才找到解決方法

但我認為 TransactionScope   要用兩條不同的 SqlDataSource  應該是可以,但我就找不到解答

目前就這樣處理吧

最後一句「幹X什麼丫」



2012年5月15日 星期二

【ASP.NET】程式設定SelectParameters值 及InsertParmeters Datatime 值



【HTML】
       
           
       


【CODE】
sqlDataSource1.SelectParameters["COM_3NO"].DefaultValue = "EVA";


sql_insert_Master.InsertParameters.Add("SYSTEM_DATE", DateTime.Now.ToString("yyyy/MM/dd H:mm:ss").ToString());
使用:DateTime.Now.ToString("yyyy/MM/dd H:mm:ss").ToString()

2012年5月11日 星期五

ASP.NET 發生 Viewstate MAC 的驗證失敗 ( machineKey

解決方法
在page 加上以下這樣
EnableEventValidation="false" EnableViewStateMac="false" ViewStateEncryptionMode="Never"

2012年5月1日 星期二

GridView RowUpdating 取欄位值 欄位名稱 CustomValidator 設定


2. 擷取 GridView內部的某一列、某一欄位的值
欄位值
 string d = (string)e.NewValues["LastName"];
string d = (string)e.NewValues["LastName"];
 if (d.Length < 5)
 {
 this.ClientScript.RegisterClientScriptBlock(this.GetType(), "msg", "");
 e.Cancel = true;
}
            else
            {
                this.ClientScript.RegisterClientScriptBlock(this.GetType(), "msg", "");
            }

欄位 input 名稱
GridView1.Rows[e.RowIndex].Cells[3].Controls[0].ClientID


--------------  CustomValidator  驗證 類別 使用  --------------

CustomValidator _CustomValidator = new CustomValidator(); 建立類別
_CustomValidator.ControlToValidate = this.txtName.ID; 控制名稱
_CustomValidator.ClientValidationFunction = "check"; Function 名稱
_CustomValidator.ErrorMessage = "請輸入資料"; 錯誤訊息文字
_CustomValidator.ValidateEmptyText = true; 是否驗證空白(一定要選)
_CustomValidator.EnableClientScript = true; 驗證使用者是否把Script 關閉
_CustomValidator.ServerValidate += new ServerValidateEventHandler(CustomValidator1_ServerValidate); 註冊 Code Server端驗證
Page.Form.Controls.Add(_CustomValidator); 將類別 放置Form 裡面



Code

        private void CustomValidator1_ServerValidate(object source, ServerValidateEventArgs args)
        {

            if (txtName.Text.Length < 5)
            {
                this.ClientScript.RegisterClientScriptBlock(this.GetType(), "msg", "");
                args.IsValid = false;
            }
            else
                this.ClientScript.RegisterClientScriptBlock(this.GetType(), "msg", "");
        }


Html
scriptfunction check(source, arguments){

    if(arguments.Value.length<5){
        alert("長度要大於4");
        arguments.IsValid = false;
    }
    else{;
    }

}
script





2. 擷取 GridView內部的某一列、某一欄位的值
C#語法 -- TextBox my_test_time = (TextBox)GridView1.Rows[e.RowIndex].Cells[4].Controls[0];
VB語法 -- Dim my_test_time As TextBox = GridView1.Rows(e.RowIndex).Cells(4).Controls(0)
              或是用 CType(GridView1.Rows(e.RowIndex).Cells(4).Controls(0), TextBox)來作轉換,強制轉成TextBox型態

2012年4月26日 星期四

【ASP.NET】讀取ASP Cookies 方式


【ASP.NET】讀取ASP Cookies 方式

            if (Request.Cookies["UserID"] != null)
            {
                string userSettings;
                if (Request.Cookies["UserID"] != null){
                    userSettings = Request.Cookies["UserID"].Value;
                    Label3.Text = userSettings;
                }
            }

參考網址:http://msdn.microsoft.com/zh-tw/library/bd70eh18(v=vs.80).aspx

2012年4月24日 星期二

【ASP.NET C#】SqlDataSource InsertCommand 空白 Null 參數設定 日期

SqlDataSource InsertCommand 新增 空白 Null 參數 設定 日期 或其型態,新增資料庫看到是 Null 尚未填寫,而不是空白,在日期欄位就不會發生錯誤

以下適用 SqlDataSource  Insert Update 功能

我有拉了一個 SqlDataSource 進來,而不是自己在Code 建一個Command

(第一種做法) 在Code 裡面 建立 Parameter 類別參數,設定該參數型別及值

SqlDataSource1.InsertCommand = "Insert Into TABLE2(id,tdate) Values('test1',@strDate) ";

Parameter strDate = new Parameter("strDate", System.Data.DbType.DateTime,string.Empty);

SqlDataSource1.InsertParameters.Add(strDate);

SqlDataSource1.Insert();


(第二種做法) 直接在InsertParameters 使用
SqlDataSource1.InsertCommand = "Insert Into TABLE2(id,tdate) Values('test1',@strDate) ";


SqlDataSource1.InsertParameters.Add(new Parameter("strDate", TypeCode.DateTime, string.Empty));

SqlDataSource1.Insert();

(第三種做法) 予許 變數 為 Null 型別 ConvertEmptyStringTo=True
SqlDataSource1.InsertCommand = "Insert Into TABLE2(id,tdate) Values('test1',@strDate) ";

Parameter strDate = new Parameter("strDate", System.Data.DbType.DateTime);

strDate.ConvertEmptyStringToNull = true;

SqlDataSource1.InsertParameters.Add(strDate);

SqlDataSource1.Insert();

(第四種做法)我還沒用過,因為他是建立 sqlcommand 類別

Command.Parameters.Add(new SqlParameter("@EditTime", SqlDbType.DateTime));
Command.Parameters["@EditTime"].IsNullable = true;
if((EditTime == null) || (EditTime == DateTime.MinValue))
Command.Parameters["@EditTime"].Value = DBNull.Value;
else
Command.Parameters["@EditTime"].Value = EditTime;
此做法
參考網址1:http://tw.myblog.yahoo.com/pey-chow/article?mid=8&prev=9&next=7
參考網址2:http://www.programmer-club.com/ShowSameTitleN/aspdotnet/5.html


另外介紹: Parameter 類別 重要參數設定 
一、public Parameter(string name, DbType dbType);

二、public Parameter(string name, DbType dbType, string defaultValue);

因為Parameter 只吃 String(字串)格式 所以我們使用string.Empty使用方式帶入,無法使用('')或toString()方式,因為型別(Date)不一樣,在 Insert它不吃('')及toString(),會出現型態格式錯誤

型別 使用:System.Data.DbType.DateTime 或 TypeCode.DateTime 都可使用




2012年4月16日 星期一

【ASP.NET 3.5】GridView 欄位 檢查

一、GridView1_RowUpdating

if(string.IsNullOrEmpty((string)e.NewValues[0])) {

                sScript = "alert('欄位不得為空值');";
                ScriptManager.RegisterStartupScript(this, this.GetType(), "error", sScript, true);
                e.Cancel = true; //取消更新

}

二、SqlDataSource1_Updating

            string sScript;
            if (String.IsNullOrEmpty(e.Command.Parameters["@NAL_BCP_M"].Value.ToString()))
            {
                sScript = "alert('欄位不得為空值');";
                ScriptManager.RegisterStartupScript(this, this.GetType(), "error", sScript, true);
                e.Cancel = true; //取消更新
            }

2012年4月4日 星期三

DataBound 下取 某個欄位的值

DataBound

Label1.Text = ((DataRowView)FormView1.DataItem).Row["NAME"].ToString();

紅色的值可以換掉

2012年4月3日 星期二

FormView的模式轉換方法


FormView1.ChangeMode(FormViewMode.ReadOnly);
FormView1.ChangeMode(FormViewMode.Insert);
FormView1.ChangeMode(FormViewMode.Edit);


轉載:http://blog.blueshop.com.tw/meya886/articles/49773.aspx

2012年3月29日 星期四

ASP.NET 回到上一頁的幾個方法(轉)


ASP.Net 學習之返回上一頁的實現方法(轉)

回上一頁的這個東東在我們做項目的時候一般是用於填寫完表單後確認的時候,有對原來輸入的數據進行修改時用的,或者是因為網站為了方便瀏覽者而有心添加的 一個東東,一般這種功能的實現在ASP.net中都是用一個button的控件來實現的,實現的方法有很多,今天恰好在做項目時碰到要用這個東東,我就把 能實現" 返回上一頁","返回前一頁"的幾種方法總結了一下,供大家學習之用,請多多指教:0)

其實要實現這個功能主要還是要用到javascript

方法一:
 在asp.net的aspx裡面的源代碼中


淺析:這個是用了HTML控件,通過一個onclick的事件,調用了javascript中的一個方法就可以了。這個是最簡單的了,也同樣適用於靜態頁面,ASP頁面等。

方法二:

利用Reponse.write
如果你對ASP有一定的瞭解,那麼對Response.write這個東東就不會陌生了,方法一是直接有HTML頁面中實現,則這個則是在後台環境中實現(這個說法好像不是很規範,呵呵)

Response.write("history.go(-2);)

返回前一頁


這裡為會麼要採用-2的值呢,我個人認為是這樣的:因為在asp.net中的頁面,當你按下一個button後,由於頁面中會實現page.postback的緣故,實際上在這其中是刷新了兩次頁面,我們要的是第一次的,所以就......


方法三

利用Response.Redirect() 或 server.transfer()


在page_load中加入
if(!IsPostBack)   
        ViewState["retu"]=Request.UrlReferrer.ToString();   
    
而在在返回按鈕事件中   
  Response.Redirect(ViewState["retu"].ToString());   
  或Server.Transfer   (ViewState["retu"].ToString());   


淺析:
Request.UrlReferrer可以獲取客戶端上次請求的url的有關信息,我們在使用這個的時候最好對其進行一個判斷

if(ViewState["UrlReferrer"]!=null)

        Response.Redirect(ViewState["UrlReferrer"].ToString();

else
{
Response.write("對不起,當前是最前頁碼「);


這樣才好使一點點喔
}

以下這段來自:http://stswordman.cnblogs.com/archive/2006/06/12/423910.html
在使用Request.UrlReferrer時還要注意:
1.  如果上一頁面使用document.location方法導航到當前頁面,Request.UrlReferrer返回空值
2.  如果有A,B兩個頁面,在瀏覽器中直接請求A頁面,在A頁面的中Page_Load事件中導航到B 頁面,則     Request.UrlReferrer返回空。因為 在Page_load事件中頁面還未初始化,所以無法記錄當前頁的信息,導航到b頁面也就 無法獲得上一頁面的信息  
3.  點擊刷新按鈕不會改變Request.UrlReferrer 



方法四:

這個方法估計很少人用,不過我試了一下,也還很不錯喔

在button的onClick事件中輸入

this.RegisterClientScriptBlock("e", "history.go(-2);");

一樣可以 返回到上一頁


方法五

這種方法也比較麻煩,不建議大家使用,這個好像是ASP裡面的。






這裡還要囉嗦一下用Javascript來實現與用Response.redirect()來實現的一點點區別,如果你是想保留你填的數據,那就要用 history.go();這個東東,如果你只是直接返回不用做任何操作,你就可以用reponse.redirect()了.
大致就這些吧,希望大家多多指正:)  

轉載地址:http://www.cnblogs.com/ipusr/articles/619285.html