2010年2月14日 星期日

微軟免費防毒軟體 : Microsoft Security Essentials

今天在安裝Win7完了之後,就在想到底要裝什麼防毒軟體,後來John介紹了一個免費的微軟防毒軟體,叫做 : Microsoft Security Essentials。

以下是官網的介紹內容:Microsoft Security Essentials 為您的家用電腦提供即時防護,可防範病毒、間諜軟體及其他惡意軟體。 Microsoft 免費*提供 Microsoft Security Essentials 軟體下載,不但安裝簡單、使用方便,而且讓您的電腦永遠受到最新技術的保護。您一眼就能辨別電腦是否安全 — 綠色代表狀況良好,就是這麼簡單。 Microsoft Security Essentials 可以在背景安靜且有效率地執行,因此您能夠隨意使用 Windows PC,而沒有中斷或長時間等候電腦的問題。

原本亞當斯裝的是這個Microsoft Forefront Client Security,後來想想反正兩者都是免費的,試試看也不錯! 所以就下載來裝看看囉,有關Microsoft Security Essentials這防毒軟體,有興趣的可以參考以下網址:http://www.microsoft.com/security_essentials/

image

2010年2月8日 星期一

ASP.NET 4.0 New Feature : Extensible Output Caching (ASP.NET 4.0 新功能之延伸快取)

ASP.NET 具備快取功能,可以將網頁、控制項或是HTTP responses資料快取起來記錄在記憶體,但是目前預設的ASP.NET快取功能所提供主要是儲存在Server的記憶體中,如果對非常龐大的存取流量來說,記憶體的耗費基本上是非常可觀的。ASP.NET 4.0的output caching功能提供開發者可以自訂output-cache providers,以儲存快取資料在不同的地方,而不單純只是在Server上的記憶體。

例如,開發者可以先開發一個客製化自訂的output-cache providers,命名為:DiskOutputCacheProvider來套用,建立一個class,這個類別可以繼承System.Web.Caching.OutputCacheProvider,然後改寫class其中的儲存方式,例如存到硬碟。設計完成之後,可以設定ASP.NET 4.0的web.config以改變網站的快取模式。

web.config設定如下:

<caching>
  <outputCache defaultProvider="AspNetInternalProvider">
    <providers>
      <add name="DiskCache"
          type="MyLib.OutputCacheEx.DiskOutputCacheProvider, DiskCacheProvider"/>
    </providers>

  </outputCache>
</caching>

以上的web.config設定表示ASP.NET 4.0預設的output-cache providers仍然是套用預設的AspNetInternalProvider,也就是直接儲存網站的記憶體中,但是我們新增了一個自訂的output-cache providers在這個網站中。

接著某一個網頁、使用者控制項…等等,想要套用自訂的output-cache providers的話,就只要設定網頁的OutputCache 指示詞去套用即可,如下列設定代表快取30秒,並且快取的資料式儲存在硬碟中:

<%@ OutputCache Duration="30" VaryByParam="None" providerName="DiskCache" %>

當然,除了直接在某一個網頁設定OutputCache 指示詞,讓網頁去套用自訂的快取模式之外,還可以在整個網站的Global.asax中改寫GetOutputCacheProviderName事件程序,去指定整個網站中的哪些網頁或資源想要套用客製化的output caching功能,程式設計如下:

public override string GetOutputCacheProviderName(HttpContext context)
{
    if (context.Request.Path.EndsWith("MyDemo.aspx"))
       return "DiskCache";
    else
        return base.GetOutputCacheProviderName(context);
}

2010年2月5日 星期五

ASP.NET 4.0 New Feature : All New Web Project Style (新ASP.NET網站專案樣板架構)

基本上ASP.NET 4.0在設計上整個專案類型比起ASP.NET 3.5 就整個外觀或是型式上,亞當斯覺得整體上改的蠻多的,而且是改的比較完善,這邊先來看看ASP.NET 4.0設計上時,比起3.5版的不同。首先是建立專案時的畫面,預設.NET Framework 4:

image

當建立一個實際的ASP.NET專案,再來看看整個專案的架構,真的是有夠完整的,不僅把預設的驗證方式改為From驗證模式,甚至是預設就使用MasterPage,還有script以及css的預設支援。

image

我們來看看上圖的整個架構,有Account資料夾,理面有Form驗證所需要的所有基本程式網頁,包含登入網頁、更改密碼網頁、或是註冊網頁…等等。有Script資料夾,包含支援JQuery的script檔;有Site.master預設就啟用主版頁面的設計…真的是完整多了。

除了預設相對3.5完整的架構之外,我們來看看它的web.config多了哪些預設的設定:

  • 首先,連線字串預設式啟用SQL EXPRESS的連線

<connectionStrings>
  <add name="ApplicationServices"
       connectionString="data source=.\SQLEXPRESS;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|\aspnetdb.mdf;User Instance=true"
       providerName="System.Data.SqlClient" />
</connectionStrings>

  • 指定目標執行版本為4.0

<compilation debug="false" targetFramework="4.0" />

  • 預設啟用Form驗證方式

<authentication mode="Forms">
  <forms loginUrl="~/Account/Login.aspx" timeout="2880" />
</authentication>

  • 會員機制、角色管理以及個人化相關的config設定,在ASP.NET 4.0 已經設定在每一個獨立的網站專案中,而不是像之前3.5前的版本都是設定在machine.config。簡單來說,要把網站的會員機制、角色管理以及個人化設定異動的話,只需要直接修改web.config即可。

<membership>
  <providers>
    <clear/>
    <add name="AspNetSqlMembershipProvider"
         type="System.Web.Security.SqlMembershipProvider"
         connectionStringName="ApplicationServices"
         enablePasswordRetrieval="false"
         enablePasswordReset="true"
         requiresQuestionAndAnswer="false"
         requiresUniqueEmail="false"
         maxInvalidPasswordAttempts="5"
         minRequiredPasswordLength="6"
         minRequiredNonalphanumericCharacters="0"
         passwordAttemptWindow="10"
         applicationName="/" />
  </providers>
</membership>

<profile>
  <providers>
    <clear/>
    <add name="AspNetSqlProfileProvider"
         type="System.Web.Profile.SqlProfileProvider"
         connectionStringName="ApplicationServices"
         applicationName="/"/>
  </providers>
</profile>

<roleManager enabled="false">
  <providers>
    <clear/>
    <add name="AspNetSqlRoleProvider" type="System.Web.Security.SqlRoleProvider" connectionStringName="ApplicationServices" applicationName="/" />
    <add name="AspNetWindowsTokenRoleProvider" type="System.Web.Security.WindowsTokenRoleProvider" applicationName="/" />
  </providers>
</roleManager>

  • 最後一個是新的模組Module設定:runAllManagedModulesForAllRequests

<system.webServer>
   <modules runAllManagedModulesForAllRequests="true"/>
</system.webServer>

  • 而在Account下有一個針對這個資料夾所套用的web.config,主要是控管網站的安全性,在這資料夾中拒絕匿名存取者,允許所有人可以直接存取Register.aspx。

    <location path="Register.aspx">
      <system.web>
        <authorization>
          <allow users="*"/>
        </authorization>
      </system.web>
    </location>

    <system.web>
      <authorization>
        <deny users="?"/>
      </authorization>
    </system.web>

  • 值得注意的是,以往在ASP.NET 3.5中web.config有關AJAX的設定,在ASP.NET 4.0並不再是設定在專案所隸屬的web.config,而是設定在ASP.NET 4.0專屬的config目錄機器層級的組態設定檔中,換言之就是 C:\Windows\Microsoft.NET\Framework\v4.0.xxxxx\Config\machine.config 中。看到這部分各位有沒有想到什麼? 沒錯,以往ASP.NET 2.0 或是 ASP.NET 3.5都是套用同樣 C:\Windows\Microsoft.NET\Framework\v2.0.50727\CONFIG 下的設定檔,而ASP.NET 4.0 則是有專屬版本的config唷。

最後來看看預設網頁Default.aspx執行起來的畫面,這是自動套用主版頁面後的執行畫面,還蠻有感覺的。

image

2010年2月4日 星期四

Design Windows Azure by Visual Studio 2010 準備工作

欲使用Microsoft Visual Studio開發Windows Azure相關的服務,必須先安裝Windows Azure Platform Training Kit,以下的網址可以直接下載這個訓練套件,在這個Training Kit中有很多Lab以及範例程式碼可供練習。

安裝完Training Kit之後,如果要練習Lab的話,可以到C:\WindowsAzurePlatformKit\Labs\IntroductionToWindowsAzure\Source\Setup 先執行SetupLab.cmd把程式碼安裝到Visual Studio中,安裝的過程當中會做環境的檢查,等到全部確定之後就會出現以下畫面。

image

當然,檢測環境的過程當中,必須要安裝Windows Azure Tools for Microsoft Visual Studio,而以目前的開發工具而言,不同的版本所對應的Windows Azure Tools for Microsoft Visual Studio也不同,以下是目前要練習最常見的兩個Windows Azure Tools for Microsoft Visual Studio:

如果是Visual Studio 2010 Beta2 的話,可以安裝以下這個版本的Tools

如果是Visual Studio 2010 RC1 的話,可以安裝以下這個版本的Tools,以下這個版本應該是目前的最新版了

等到把Windows Azure Tools for Microsoft Visual Studio也安裝完成了,就會有以下的幾個安裝畫面出現,在此列出來方便各位對照。下圖是安裝所有的Lab Template:

image

出現下面警告視窗,按"Yes",畢竟如果是微軟官方網站下載的,基本上應該安全性還可以信任啦!

image

接下來安裝Code Snippet,因為亞當斯是要使用Visual Studio 2010來練習,所以只要挑選Visual Studio 2010 Beta2 並且把所有預設的Code Snippet都裝上來就可以了。

image

喔耶,到目前為止,基本的準備工作就算安裝完成了。^_^

image

2010年1月23日 星期六

WCF Service cant HOST in IIS 7.0 Troubleshooting

這幾天突然心血來潮,想要測試一些ASP.NET整合WCF的功能,因此為了方便測試起見,直覺就是把WCF Service放在IIS 7.0 中,讓IIS自動來控管,興高采烈的新增了一個WCF服務的網站

image

然後先進行service的測試,是否可正常運作,因此把Service.svc跑起來,想說應該是很理所當然的執行成功,沒想到突然IE上出現的錯誤訊息,讓我愣了一下。因為之前都是使用File System的方式建立網站,因此當把WCF實際放到IIS 80 port的路徑下時,就錯誤了。

image

當然,以上的錯誤訊息很明顯是IIS中的"處理常式對應"沒有在IIS對應到svc的副檔名,但是亞當斯想了想,當初明明是IIS先裝再裝vs.net的,因此理論上有關.NET的IIS metadata都會自動安裝完成,怎還會對應不到? (目前猜想中可能是因為之前裝了一些.NET測試小工具,影響到IIS的設定,至於是哪一個小工具,目前尚無法確定),打開IIS的"處理常式對應",發現真的是沒有svc的對應。

解決方式為 :

1.在VS.NET的命令提示字元視窗下指令,先安裝對應的WCF metadata:

C:\Windows\Microsoft.NET\Framework\v3.0\Windows Communication Foundation\ServiceModelReg.exe -i

2.在VS.NET的命令提示字元視窗下指令以查詢設定狀況:

ServiceModelReg.exe -vi

image

此時,在machine的web.config就會自動加入副檔名的執行對應(如下),但是IIS中卻還是不會自動加入。

<add path="*.svc" verb="*" type="System.ServiceModel.Activation.HttpHandler, System.ServiceModel, Version=3.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" validate="false" />

3.回到IIS 7.0管理工具,設定IIS的處理常式對應,如下圖:

image

並且新增一個svc對應的處理常式:

  • 要求路徑:*.svc
  • 類型:System.ServiceModel.Activation.HttpHandler, System.ServiceModel, Version=3.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
  • 名稱:svc-Integrated。

image

4.設定好之後,執行IIS網站中,任一個已經設計好.svc的服務,就可以呈現正常的服務頁面了。

image