2012年12月12日 星期三

[Flash AS3] FlashDevelop Add New AS3 Templates

新增AS3 Template的步驟如下:
 1.點FD的Tools/Application Files會開啟FD所在的資料夾

    2.在資料夾Templates/ProjectFiles/AS3Project/ 下新增自定義的Template

    3.開啟FD,在Project視窗按滑鼠右鍵->Add  就可以看到新增的Template了



註:
    如果要修改New AS3 Project時自動生成資料夾的相關資料的話可以到路徑C:\Program Files (x86)\FlashDevelop\Projects\120 ActionScript 3 - AS3 Project\ 修改。


tag說明

[Flash AS3] 在FlashDevelop的ToolBar加入自定義功能的按鈕

    FlashDevelop是free且Open Source Code的IDE所以要在ToolBar加上自己用的功能當然也是可以的!

    在ToolBar加入自定義功能的按鈕只需要在ToolBar.xml做修改即可(Win7的路徑是在C:\Program Files (x86)\FlashDevelop\Settings\ToolBar.xml)

    例如做一個按鈕,點擊會開啟文字文件。就在ToolBar.xml的toolbar標籤中加入<button label="open notepad" click="RunProcess" tag="notepad" image="315" />重啟FD後就可以在ToolBar看到剛新增的按鈕了!

    image編號如下圖:
 


[Flash AS3] code snippets tag

    code snippets 很適合用在自定義的寫作規範的程式碼,在經常使用的情況下就可以考慮寫成code snippets來加快編碼的速度。
    以下是很常用的tag說明:
 
$(EntryPoint) -- cursor position 
$(CSLB) ("Coding Style Line Break") -- when generating code, tells where to insert a linebreak if the "Coding Style Type" option (program setting) is set to "Brace After Line". 
 
 
如需要其它templates variables的說明可以到下列網址

2012年12月3日 星期一

[Flash AS3] 設定物件亮度

/**
* 設定物件亮度
* @param obj 物件實體
* @param value 亮度值,value取值範圍 -1 ~ 1,對應Flash内容制作工具裡的 -100% ~ 100%!
*/
private function setBrightness(obj:DisplayObject , value:Number):void 
{
    var colorTransformer:ColorTransform = obj.transform.colorTransform;
    var backup_filters:* = obj.filters;
    if (value >= 0)
    {
     colorTransformer.blueMultiplier = 1 - value;
     colorTransformer.redMultiplier = 1 - value;
     colorTransformer.greenMultiplier = 1 - value;
     colorTransformer.redOffset = 255 * value;
     colorTransformer.greenOffset = 255 * value;
     colorTransformer.blueOffset = 255 * value;
    }
    else 
    {
     value = Math.abs(value) 
     colorTransformer.blueMultiplier = 1 - value;
     colorTransformer.redMultiplier = 1 - value;
     colorTransformer.greenMultiplier = 1 - value;
     colorTransformer.redOffset = 0;
     colorTransformer.greenOffset = 0;
     colorTransformer.blueOffset = 0;
    }
   
    obj.transform.colorTransform = colorTransformer;
    obj.filters = backup_filters;
}

2012年10月25日 星期四

[C# ASP.Net] Client端資料當參數傳到新頁面


  如果有些資料不是很重要,又不想記在Server端時,就會把這些資料記在Client端。那如果想要在使用者動作後(按下按鈕)開啟新視窗,又要以儲在Client端的資料當參數帶到新視窗時可能得到一個錯誤訊息如下:

描述: 要求驗證偵測到具有潛在危險的用戶端輸入值,對這個要求的處理已經中止。這個值可能表示有人嘗試危害應用程式的安全性,例如跨站台的指令碼處理攻擊。若要允許頁面覆寫應用程式要求驗證設定,請將 httpRuntime 組態區段中的 requestValidationMode 屬性設定為 requestValidationMode="2.0"。例如: <httpRuntime requestValidationMode="2.0" />。設定這項值之後,您就可以停用要求驗證,方法是在頁面指令或 <pages> 組態區段中設定 validateRequest="false"。但是我們強烈建議您的應用程式應該明確地檢查所有這類的輸入。如需詳細資訊,請參閱 http://go.microsoft.com/fwlink/?LinkId=153133。


  在這些值可能被改的情況下,確認不會對網頁或其它資料有危險性時才可以讓這網頁不做驗證。讓網頁不做驗證的方式很簡單步驟如下:


1.Web.config檔加入
<system.web>
    <httpRuntime requestValidationMode ="2.0"/>
</system.web>

requestValidationMode 預設是4.0



2.在要開啟的新網頁<@ Page /> 中加入ValidateRequest="false"
表示這個網頁停止要求驗證

[C# ASP.Net] 在GridView Bind 資料之前做資料的過濾

        有時候從DB取出資料後想再對資料做些手腳,像是過濾、排序或者是只想秀出前幾筆的資料。這些都可以透過DataView來幫你完成。

        通常我取到的都是DataTable型態的資料,所以必需先把資料轉成DataView的型態資料,如下:DataView dataView = new DataView(dataTable);

  DataView型態的資料就可以有過濾、排序方法可以使用囉!


        過濾:
   過濾的用法就像是在SQL下Where指令一樣,例如:
                dataView.RowFilter = "UserName = '%Johnson%'";
            RowFilter就會找到CloumnName為UserName的資料列,比對內容為Johnson才會記在dataView中,其它的資料就會被移除。過濾後再指dataView指定為GridView的DataSource再Bind後就可以看到過濾後的結果了。當然也可以使用like來過濾含有指定字串的都要顯示,指令如下:
    dataView.RowFilter = "UserName like '%John%'";
這個就會列出UserName欄位中,只要含有字串John的都會被顯示出來。


        排序:
            可以使用Sort屬性,對單一或多個資料行做排序,並且可以加入ASCDESC參數。


        只顯示前幾筆資料
            如果有需要只顯示前幾筆資料的話,我使用的方法是Delete,例如我有100筆資料,只想顯示前50筆那就用Delete把第50筆之後的資料全部都Delete。範例如下:
        int showDataNum = 50;
        int rowCount = dataView.Count; //100筆
        if(rowCount > showDataNum)
        {
             for(int i = showDataNum; i < rowCount; i++)
                 dataView.Delete(showDataNum);
         }


2012年10月21日 星期日

實價登錄地圖

實價登入上線了,用實價登錄地圖可以很快又方便找到資訊。有需要買房的可以參考看看

[C# .Net] 頁面自動符合手機瀏覽器大小

在Head標籤中加入<meta name="viewport" content="width=device-width; initial-scale=1.0; maximum-scale=1.0; user-scalable=0;">頁面就可以依照手機畫面大小做自動縮放的功能!

[新聞 補助] 內政部育兒津貼

內政部從今年推出育兒津貼,對象是全台灣2歲以下新生兒夫妻只要其中一人沒工作年收入少於113萬,就可以申請每個月可請領每月新台幣2500元至5000元津貼。

[C# .Net] Get SVN Revision Number

在.Net或AP要把SVN的版本資訊寫入並在RunTime取得版本有以下幾個步驟

首先有幾個問題必須先知道
1.版本的資訊寫在哪呢?
2.怎麼在編譯時期把SVN的版本號寫入版本資訊中?
3.在RunTime時期怎麼取得版本資訊?

解決這三個問題就OK啦!

第一個和第二個問題在.Net和AP是用一樣的方法
下面就不一一列出解法了


1.版本的資訊寫在哪呢?
Ans:在你的專案下你可以發現一個Properties的資料夾,裡面有一個AssemblyInfo.cs檔,而版本資訊就寫在裡面囉!


2.怎麼在編譯時期把SVN的版本號寫入版本資訊中?
Ans:寫入版本可以透過建置後事件命令,來修改AssemblyInfo.cs檔的版本資訊,有以下幾個步驟:
1.在建置後事件命令輸入SubWCRev.exe "$(SolutionDir)." "$(ProjectDir)Properties\AssemblyInfo.tpl.cs" "$(ProjectDir)Properties\AssemblyInfo.cs" -f

2.在Properties的資料夾新增一個AssemblyInfo.tpl.cs的檔案,檔案內容就Copy AssemblyInfo.cs的內容:


// 組件的版本資訊是由下列四項值構成:
//
//      主要版本
//      次要版本
//      組建編號
//      修訂編號
//
// 您可以指定所有的值,也可以依照以下的方式,使用 '*' 將組建和修訂編號
// 指定為預設值:
// [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("1.$WCREV$.0.0")]
[assembly: AssemblyFileVersion("1.$WCREV$.0.0")]


以此範例來說,版本資訊會顯示成1.SvnVersion.0.0
如此在建置後事件就可以改版本資訊了。


3.在RunTime時期怎麼取得版本資訊?
Ans:.Net取得的方法:Assembly.GetExecutingAssembly().GetName().Version.ToString();
          AP取得的方法:Assembly.LoadFile(Application.ExecutablePath).GetName().Version.ToString();

2012年10月9日 星期二

網頁上顯示特殊符號

  網頁上有些資料可能是動態從DB或其它地方取得然後在前台顯示,但是資料中有可能會有一些Html用的標籤,就會導致顯示出來的文字會有問題。所以在取得資料時就要先經過轉碼的動作來避免這個問題。

  
 
  轉碼可以到HTML常用的特殊符號這個網頁來找符號要轉成那個碼。例如&就要轉成&amp; 以此類推,這樣就能正常顯示等殊符號在網頁上囉!

        這個也可以用在寫XML註解的地方喔!




[C# .Net] TextBox限制只能輸入數字

在前端加入Script如下
<script type="text/javascript">
    function txtKeyNumber() {
        if (!(((window.event.keyCode >= 48) && (window.event.keyCode <= 57)) ||
            (window.event.keyCode == 13) || (window.event.keyCode == 46) ||
            (window.event.keyCode == 45)))
        //這段是判斷如果輸入的不是數字或小數點!那將無法輸入文字
        {
            event.returnValue = false;
        }
    }
</script>


然後再後端把想要限制的TextBox在他的Attribute加入一個OnKeyPress的事件會去呼叫上面的javascript即可!

txtOnlyNumber.Attributes.Add("OnKeyPress""txtKeyNumber();");






2012年10月2日 星期二

[SQL] delete all records and reset the auto increment value

當Table中有自動累加的欄位時,下命令Delete也是沒有辦法清除累加值的資訊,但是可以使用
TRUNCATE TABLE some_table
這個命令來完全的清除所有的紀錄,但是要切記,使用這個命令要格外小心。因為使用後就再也無法回復,而且也不會有任何紀錄!

用Cmd在IIS上裝.netFrameWork

以命令的方式裝.netFrameWork4.0

1. 先開啟命令視窗

2. cd c:\Windows\Microsoft\Framework\v4.0.30319

3. aspnet_regiis -i

等安裝完後再下命令重啟IIS
iisreset

2012年10月1日 星期一

[C# .Net] Server端 註冊Script到Client端 當被UpdatePanel包起來時

一般Server端要註冊Script到Client端時使用RegisterClientScriptBlock即可,如以下範例


ClientScript.RegisterClientScriptBlock(this.GetType(), "onSelectedNodeChanged","document.all.getElementById('" + ctrl.ClientID + "').visible=false;");


那如果有被UpdatePanel包起來時,使用上面的方式就會沒有任何效果!而必需改用下面的方式:

ScriptManager.RegisterStartupScript(this.Page, this.Page.GetType(), "DynamicResponseScriptBlock" + new Random().Next().ToString()"alert('hi');"true);





[C# .Net] server side dynamic add script in client side

    Server端動態加入Script到Client端的方式有很多,根據Script放置的位置不一樣,所使用的語法也會不同。

    以下範例為加Scrip到各區塊的語法(依上到下的順序):

HtmlGenericControl jqueryInclude = new HtmlGenericControl("link");
jqueryInclude.Attributes.Add("href""Styles/superTables.css");
jqueryInclude.Attributes.Add("rel""stylesheet");
jqueryInclude.Attributes.Add("type""text/css");
Page.Header.Controls.Add(jqueryInclude);

加在</head>的標籤之前


 RegisterClientScriptBlock
string scriptContent = "this is your script!!";
ScriptManager.RegisterClientScriptBlock(this, this.GetType(), "dynamicScript", scriptContent, true);

 

RegisterStartupScript
string scriptContent = "this is your script!!";
ScriptManager.RegisterStartupScript(thisthis.GetType(), "dynamicScript", scriptContent, true);

 




  

2012年9月14日 星期五

[C# .Net] Client Side Call Server Side Method - Using PageMethods

Client 端要呼叫Server端的方法有許多方式,以下範列是用PageMethods來呼叫Server端的方法。

Client端的寫法:

 <script type="text/javascript">
function functionName() {
  PageMethods.serverFunctionName(param1,param2, onSuccess, onFail);
 }
 function onSuccess(response, context, method) {
  if (method == 'sendCommandToModifyChance') {
   alert(response);
  }
 }
 function onFail(response, context, method) {
  if (method == 'sendCommandToModifyChance') {
   alert("command sned error!");
  }
 }
     
</script>


Server 端的寫法:

[System.Web.Services.WebMethod]//一定要宣告成public static
 public static void serverFunctionName(param1,param2)
 {
            //do something
 }



注意事項:
1. Server端的方法上面要宣告[System.Web.Services.WebMethod]的標籤
2. 要被Client呼叫的方法一定要宣告成public static
3. 在<form>標籤下加入ScriptManager
form id="form1" runat="server">
    <asp:ScriptManager ID="ScriptManager1" runat="server" EnablePageMethods="true">
    </asp:ScriptManager>

2012年9月4日 星期二

[C# .Net] GridView 固定標頭

        要固定GridView標頭的這個功能我想是很多人需要用到的,尤其是資料量大的時候更顯得出它的重要。我想使用者並不會想要在看某筆資料時,還要拉到頂端看這欄位所代表的意思。

        固定GridView標頭的方式有很多種,最常用的應該是用CSS樣式來做這樣的效果。有的是使用JQuery方法很多種,最後筆者是選superTable來達到固定標頭的功能,而且還可以固定column剛好符合我的而求。最令我想用superTable的另一個原因是因為它可以跨Browser,在官網中就可以知道它所支援的Browser有 Firefox 2+, Internet Explorer 5.5+, Safari 3+, Opera 9+ and Chrome (Tested in Windows)


參考資料:
SuperTabl
SuperTable用法範例
JQuery用法
CCS樣式範例

2012年9月1日 星期六

[Information] 線上課程 Coursera

在線上學習大學的免費公開課程,而且還可以獲得學分證明喔!

想學習的人可以到Coursera的網站!


以下為coursera相關報導

[IT] TCP Protocol 和 IP Protocol 的功能簡介


IP(Internet Protocol):
用來處理封包的路徑選擇(Routing,簡稱路由)

TCP(Transmission Control Protocol):負責比較高層的功能,如分段(segmentation)、重組(reassembly) 及錯誤偵測(error detection)

[IT] What is gateway

gateway是一個中介的硬體,用來將資料(封包)一個網路傳送另一個網路

[Tool] Visual Studio 2010 Extension Tools

Productivity Power Tools
這工具裡面包含蠻多實用的功能,可參考下列網址

[C#] WeifenLuo的DockPanel 預設Float視窗的大小

Float視窗的預設大小可由dockPanel的屬性DefaultFloatWindowSize 來做設定

dockPanel1.DefaultFloatWindowSize = new System.Drawing.Size(width, height);



[C#] log4net 教學及使用範例 - RollingFileAppender

這個Appender會將Log以檔案的方式紀錄到指定的路徑下




<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <configSections>
    <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" />
  </configSections>
  <log4net>
 
    <appender name="RollingFileAppender" type="log4net.Appender.RollingFileAppender">
      <-- Log會寫在程式執行路徑下的Logs\LogFile.txt -->
      <file value="Logs\LogFile.txt" />
      <appendToFile value="true" />
      <rollingStyle value="Date" />
      <!--日期的格式 yyyyMMdd-HHmm:Log會以分來切割資料-->
      <datePattern value="yyyyMMdd" />
      <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="Date:%d%nThreadID:%t%nLevel:%level%nLogger:%logger%nLine:%l%nMessage:%message%nException:%exception%n%n" />
      </layout>
    </appender>
    <root>
      <level value="ALL" />
      <appender-ref ref="RollingFileAppender" />
    </root>
  </log4net>
 
  <startup>
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0" />
  </startup>
 
  <system.web>
    <membership defaultProvider="ClientAuthenticationMembershipProvider">
      <providers>
        <add name="ClientAuthenticationMembershipProvider" type="System.Web.ClientServices.Providers.ClientFormsAuthenticationMembershipProvider, System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" serviceUri="" />
      </providers>
    </membership>
    <roleManager defaultProvider="ClientRoleProvider" enabled="true">
      <providers>
        <add name="ClientRoleProvider" type="System.Web.ClientServices.Providers.ClientRoleProvider, System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" serviceUri="" cacheTimeout="86400" />
      </providers>
    </roleManager>
  </system.web>
 
</configuration>

[C#] log4net 教學及使用範例 - SmtpAppender


<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  
  <configSections>
    <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" />
  </configSections>
  
  <log4net>
    <!--
    This use SMTP to send mail.
    -->
    <appender name="SmtpAppender" type="log4net.Appender.SmtpAppender">
      <to value="收件者Mail" />
      <from value="寄件者Mail" />
      <!-- 是否使用SSL加密 -->
      <EnableSsl value="true" />
      <username value="寄件者帳號" />
      <password value="寄件者密碼" />
      <subject value="主旨" />
      <!-- smtpHost 在此是以google的為範例 -->
      <smtpHost value="smtp.gmail.com" />
      <authentication value="Basic" />
      <port value="25" />
      <bufferSize value="512" />
      <lossy value="true" />
      <evaluator type="log4net.Core.LevelEvaluator,log4net">
        <threshold value="ERROR" />
      </evaluator>
      <layout type="log4net.Layout.PatternLayout">
        <param name="ConversionPattern" value="LogName:%c%nLevel:%level%nData:%date%nThreadID:%thread%nMSG:%message%nEX:%exception%n%n" />
      </layout>
      <filter type="log4net.Filter.LevelRangeFilter">
        <levelMin value="WARN"/>
        <levelMax value="FATAL"/>
      </filter>
    </appender>
    
    <root>
      <level value="ALL" />
      <appender-ref ref="SmtpAppender" />
    </root>
    
  </log4net>
 
  <startup>
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0" />
  </startup>
 
  <system.web>
    <membership defaultProvider="ClientAuthenticationMembershipProvider">
      <providers>
        <add name="ClientAuthenticationMembershipProvider" type="System.Web.ClientServices.Providers.ClientFormsAuthenticationMembershipProvider, System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" serviceUri="" />
      </providers>
    </membership>
    <roleManager defaultProvider="ClientRoleProvider" enabled="true">
      <providers>
        <add name="ClientRoleProvider" type="System.Web.ClientServices.Providers.ClientRoleProvider, System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" serviceUri="" cacheTimeout="86400" />
      </providers>
    </roleManager>
  </system.web>
 
</configuration>

[C#] log4net 教學及使用範例 - ConsoleAppender


<?xml version="1.0"?>
<configuration>
  
  <configSections>
    <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" />
  </configSections>
  
  <log4net>
    <appender name="ConsoleAppender" type="log4net.Appender.ConsoleAppender">
      <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="Date:%d%nThreadID:%t%nLevel:%level%nLogger:%logger%nLine:%l%nMessage:%message%nException:%exception%n%n" />
      </layout>
      <!--輸出的Log層級在DEBUG和FATAL之間(只有INFO的LOG不會被輸出) -->
      <filter type="log4net.Filter.LevelRangeFilter">
        <levelMin value="DEBUG"/>
        <levelMax value="FATAL"/>
      </filter>
    </appender>
    <root>
      <level value="ALL" />
      <appender-ref ref="ConsoleAppender" />
    </root>
  </log4net>
  
  <startup>
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0" />
  </startup>
  
  <system.web>
    <membership defaultProvider="ClientAuthenticationMembershipProvider">
      <providers>
        <add name="ClientAuthenticationMembershipProvider" type="System.Web.ClientServices.Providers.ClientFormsAuthenticationMembershipProvider, System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" serviceUri="" />
      </providers>
    </membership>
    <roleManager defaultProvider="ClientRoleProvider" enabled="true">
      <providers>
        <add name="ClientRoleProvider" type="System.Web.ClientServices.Providers.ClientRoleProvider, System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" serviceUri="" cacheTimeout="86400" />
      </providers>
    </roleManager>
  </system.web>
</configuration>


[C#] log4net 教學及使用範例(一)


  1. 功能簡介
    :這裡講的log4net是一個很好用的open source code的組件。可以把你想輸出的log以不同的 格式輸出到不同的媒介
  2. 用途:主要用途當然就是要讓自己能夠在第一時間能夠很快又方便的找到Bug或者是自己想看的資訊。
  3. Log的分級:總共分成七級( 但實際可以在程式碼被呼叫的只有2-6級 )
    1. OFF - nothing gets logged (cannot be called)
    2. FATAL。
    3. ERROR
    4. WARN
    5. INFO
    6. DEBUG
    7. ALL - everything gets logged (cannot be called)
  4. 組態設定
    1. Root :
          所有的Log都繼承自root,所以預設的level為INFO,表示DEBUG層級的資訊預設

      <root>
            <level value="INFO" />
            <appender-ref ref="RollingFileAppender" />
            <appender-ref ref="SmtpAppender" />
            <appender-ref ref="ConsoleAppender" />
      </root>
      
    2. ConfigSections:
          這個標籤要放在 <configuration> 標籤下的第一個位置,不然會出錯。
      <configSections>
          <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" />
        </configSections>
    3. Appender:
       指定要用那一種方式寫入Log。下面的例子便是把Log輸出到Console的表示法。
      <appender name="ConsoleAppender" type="log4net.Appender.ConsoleAppender">
      
    4. Layout:
          Log輸出的格式。
      <layout type="log4net.Layout.PatternLayout">
              <conversionPattern value="Date:%d%nThreadID:%t%nLevel:%level%nLogger:%logger%nLine:%l%nMessage:%message%nException:%exception%n%n" />
            </layout>
      
    5. Conversion Pattern:
          把Value的值轉換成Log資料。Value中的變數如下:

          %m(message):輸出的Log訊息,如ILog.Debug(message)輸出的一條消息
          %n(new line):換行
          %d(datetime):輸出當前语句運行的時間
          %r(run time):輸出程序從運行到執行到當前語句時消耗的毫秒數
          %t(thread id):當前語句所在的執行序ID
          %p(priority): 日志的當前優先級别,即DEBUG、INFO、WARN…等
          %level:錯誤層級
          %c(class):當前Log對象的名稱
          %L(line):輸出語句所在的行號
          %F(file):輸出語句所在的文件名
          %-數字:表示該項的最小長度,如果不夠,則用空格填充
    6. Filters
          用來過濾Log,過濾方式可依照Log level 或依Log字串....等等方式。
          (注意:
       filter的條件一定要在layout之後才有作用 )
          過濾的方式如下:
      1. StringMatchFilter
      2. LevelRangeFilter
      3. LevelMatchFilter
      4. DenyAllFilter
  5. 以下為一個簡單的組態設定的寫法,下次有空時再補上其它資料:
    <?xml version="1.0"?>
    <configuration>
      <configSections>
        <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" />
      </configSections>
      <log4net>
          <layout type="log4net.Layout.PatternLayout">
            <param name="ConversionPattern" value="LogName:%c%nLevel:%level%nData:%date%nThreadID:%thread%nMSG:%message%nEX:%exception%n%n" />
          </layout>
          <filter type="log4net.Filter.LevelRangeFilter">
            <levelMin value="WARN"/>
            <levelMax value="FATAL"/>
          </filter>
     </log4net>
      <startup>
        <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0" />
      </startup>
      <system.web>
        <membership defaultProvider="ClientAuthenticationMembershipProvider">
          <providers>
            <add name="ClientAuthenticationMembershipProvider" type="System.Web.ClientServices.Providers.ClientFormsAuthenticationMembershipProvider, System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" serviceUri="" />
          </providers>
        </membership>
        <roleManager defaultProvider="ClientRoleProvider" enabled="true">
          <providers>
            <add name="ClientRoleProvider" type="System.Web.ClientServices.Providers.ClientRoleProvider, System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" serviceUri="" cacheTimeout="86400" />
          </providers>
        </roleManager>
      </system.web>
    </configuration>