標籤

ASP.NET MVC (29) Visual C# (15) JQuery (10) Plugins (8) JQuery Plugins (6) JavaScript (6) MySQL (5) CSS (4) LinQ (4) Mac OS (4) CentOS (3) Design Pattern (3) Entity Framework (3) IIS (3) Python (3) Windows (3) php (3) Docker (2) LAMP (2) SQL Server (2) WCF (2) .NET (1) .NET Core (1) AWS (1) Browser (1) GIS (1) IE (1) Internet Security (1) Linux (1) Platform (1) React (1) SEO (1) Testing (1) VMware (1) Windows 7 (1) cookie (1) curl (1) laravel (1) phpBB (1) session (1) 中古屋 (1) 透天 (1) 閒言閒語 (1) 面試 (1) 鳥松 (1)

2013年12月1日 星期日

[Visual C#] 在啟動寫入之後無法設定此屬性 WebRequest

今天使用.NET的HttpWebRequest玩API串接,結果出現錯誤訊息:

在啟動寫入之後無法設定此屬性

原因是使用HttpWebRequest物件時,設定ContentLength一定要比寫入RequestStream還要早。


            var data = "data";
            myHttpWebRequest.ContentLength = data.Length;
            using (Stream stream = myHttpWebRequest.GetRequestStream())
            {                        
                stream.Write(Encoding.UTF8.GetBytes(data) , 0, data.Length);            
            }











HTTP request with post

HOW TO:使用 WebRequest 類別,傳送資料



2013年11月24日 星期日

[Visual C#] 讓WebBroswer控制項使用IE9模式運行

WebBroswer控制項預設會使用IE7模式運行,如果想要使用其他模式則需要改變登錄檔(執行Regedit.exe),程式碼如下:

        private void Form1_Load(object sender, EventArgs e)
        {
            var appName = Process.GetCurrentProcess().MainModule.ModuleName;
            Registry.SetValue(@"HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer\MAIN\FeatureControl\FEATURE_BROWSER_EMULATION", appName, 9999, RegistryValueKind.DWord);
        }

其中9999代表IE9,

9999 (0x270F)
Internet Explorer 9. Webpages are displayed in IE9 Standards mode, regardless of the !DOCTYPE directive.

9000 (0x2328)
Internet Explorer 9. Webpages containing standards-based !DOCTYPE directives are displayed in IE9 mode.

8888 (0x22B8)
Webpages are displayed in IE8 Standards mode, regardless of the !DOCTYPE directive.

8000 (0x1F40)
Webpages containing standards-based !DOCTYPE directives are displayed in IE8 mode.

7000 (0x1B58)
Webpages containing standards-based !DOCTYPE directives are displayed in IE7 Standards mode.








[C#]設定WebBrowser Control運行的User Agent版本

Web Browser Control – Specifying the IE Version





























2013年11月21日 星期四

[Visual C#] 執行出現 每個組態檔只允許一個 項目 的錯誤

System.Configuration.ConfigurationErrorsException

每個組態檔只允許一個 <configSections> 項目

---

起因是因為在App.config (or Web.config)中 ,   <configSections> 區段一定要是在<configuration>區段中的第一個,如下:

<configuration>
  <configSections>
    ...
  </configSections>
  <applicationSettings>
    ...
  </applicationSettings>
  <connectionStrings>
   ...
  </connectionStrings>
</configuration>

否則會出現錯誤。




app.config 小插曲



2013年11月13日 星期三

[ASP.NET MVC] 如何在MVC中支援讀取靜態html;htm 檔案

在route規則中加入以下規則

routes.IgnoreRoute("*.html")

原理是只要看到*.html的要求,則忽略路由規則,不會去找對應的Controller -> Action



[Reference]:

Add Static HTML file to Root of Azure MVC App

2013年11月12日 星期二

[ASP.NET MVC] 如何將物件序列化為Json格式,不使用Controller.Json()方法。

在Controller中我們可以輕鬆使用return Controller.Json(obj)方法來將obj序列化成Json格式,

但如果要在其他地方做也許不行,此時可以使用下列方式:

(new System.Web.Script.Serialization.JavaScriptSerializer()).Serialize(obj);

來將obj序列化成Json格式,注意回傳是string。

----

更新:

此種方法會讓<br>轉換為\u003cbr\u003e ,推薦使用Json.NET

var objJson = Newtonsoft.Json.JsonConvert.SerializeObject(obj)

如果objJson中含有Html Tag (例如<br>),則需以變數方式寫在HTML TAG中:

<html>
    <div id="D">@objJson</div>
</html>

之後使用JQuery取出:
    var aJson = $.parseJSON($('div#D').text());

這樣aJson 就不會出錯了



Reference :
JavaScriptSerializer 類別

Json.NET


2013年11月7日 星期四

[LinQ] LinQ to MySQL 出現 Outter Apply 語法不支援的問題

LinQ to MySQL

起因是因為LinQ會將 First() FirstOrDefault()此類方法的語法轉譯為Outter Apply ,

但是MySQL不支援此種語法。

目前看起來似乎無解,暫時使用Take()取代FirstOrDefault()是比較快速的方式






http://www.telerik.com/community/forums/aspnet-mvc/grid/outer-apply-is-not-supported.aspx

2013年11月5日 星期二

FireFox 24 停用 JavaScript

FireFox新版把選項拿掉了,要停用請依下列步驟:

  • 在網址列打『about:config』再按 Enter。
  • Firefox 會說亂搞的話,會讓 Firefox 失去保固,請按下『我發誓,我一定會小心的』。
  • 再在搜尋這裡尋找『Javascript.enabled』。
  • 預設值為『true』,代表啟用,在該項目連按兩下會變『false』,代表停用 JavaScript。
  • 2013年10月18日 星期五

    [Visual C#][Design Pattern] C#實作執行緒安全(thread-safe)的Singleton類別


    Singleton是撰寫程式時常用到的一個設計模式,例如需要實作某個單一控管的容器(連接池是一個例子),同時也需要考慮Singleton類別的執行緒安全,我們必須保證不會同時有兩個以上的物件被實體化(new instance)。

    以下是一個Singleton類別的範例,此範例使用雙重判斷(double-check)的手法來避免兩個以上的物件被實體化:

    public sealed class Singleton
    
    {
       private static volatile Singleton instance;
       private static object syncRoot = new Object();
    
       private Singleton() {}
       public static Singleton Instance
       {
          get
          {
             if (instance == null)
             {
                lock (syncRoot)
                {
                   if (instance == null)
                      instance = new Singleton();
                }
             }
             return instance;
          }
       }
    }



    [Reference]:

    Implementing Singleton in C#

    Thread Safe C# Singleton Pattern

    2013年5月15日 星期三

    [ASP.NET MVC][IIS]在應用程式層級之外使用註冊為 allowDefinition='MachineToApplication' 的區段發生錯誤。錯誤的原因可能是虛擬目錄尚未在 IIS 中設定為應用程式


    針對網站做發行時發生下列錯誤訊息導致無法發行:

    在應用程式層級之外使用註冊為 allowDefinition='MachineToApplication' 的區段發生錯誤。錯誤的原因可能是虛擬目錄尚未在 IIS 中設定為應用程式

    網路上找了一下,大致原因是存在了重複的WebConfig檔案,下意識把整個obj目錄砍了再發行一次就沒問題了,詳細原因沒研究。


    保哥部落格有相關資訊:

    ASP.NET MVC 建置部署套件後無法 MvcBuildViews 的解法

    Reference:

    Asp.net MVC 建置發行時出現錯誤訊息:錯誤的原因可能是虛擬目錄尚未在 IIS 中設定為應用程式。






















    2013年5月11日 星期六

    [Internet Security] DNS 放大攻擊 DNS Amplification Attacks

    [原理] :
    透過使用IP對DNS Server反查所有有用到這個Domain的SubDomain清單,可能送出查詢只有1K,但是DNS Server回復訊息可能是100K或以上,造成放大攻擊(1:100)使受害的DNS Server癱瘓,造成其他使用者無法正常瀏覽該網站。屬於DDOS攻擊的一種。

    [解決方案]:
    DNS Server上設置每秒最多查詢量的限制。

    [Reference]:




    DNS 放大攻擊(DNS Amplification Attacks)