2010年5月24日 星期一

Visual Studio 2008 開啟 aspx/ascx 死當

最近遇到 Visual Studio 2008 在打開 aspx/ascx 會整個當住,不是程式無回應的當法,而是 Visual Studio 2008 停住無論用鍵盤或是滑鼠都無法操作,一定得用 Task Manager 強制停止工作才行

解決方式

重新安裝 Microsoft Visual Studio Web Authoring Component 就可以解決此問題了

  1. 到 Programs and Features 移除 Microsoft Visual Studio Web Authoring Component
  2. 執行 Visual Studio 2008 安裝光碟中的 WCU\WebDesignerCore\WebDesignerCore.exe 重新安裝此元件
相關連結

2010年5月23日 星期日

ASP.NET 執行時期動態取得執行個體的屬性

在.NET Framework 要動態取得屬性值,除了利用 System.Reflection 的函式庫之外,還可以用 System.Web.DataBinder 所提供的函式來取得屬性值

範例程式碼
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Web.UI;

namespace DataBind
{
    class Program
    {
        static void Main(string[] args)
        {
            Customer customer = new Customer();
            customer.ID = 1;
            customer.Name = "John";

            Console.WriteLine("GetPropertyValue-ID={0}", DataBinder.GetPropertyValue(customer, "ID"));
            Console.WriteLine("GetPropertyValue-Name={0}", DataBinder.GetPropertyValue(customer, "Name"));
            Console.WriteLine("Eval-Name={0}", DataBinder.Eval(customer, "ID"));
        }
    }

    internal class Customer
    {
        public int ID { get; set; }
        public string Name { get; set; }
    }
}
執行結果
GetPropertyValue-ID=1
GetPropertyValue-Name=John
Eval-Name=1

2010年5月20日 星期四

防止 ASP.NET IIS Process 被自動停止

前言

最近在專案中遇到一個需求,需要在 ASP.NET IIS 的環境中排程,在固定的時間執行工作。問題來了,ASP.NET 的設計,在一段時間沒有人連線時,IIS 會自動將 Process 停止,造成原本排定的工作沒有正常執行。網路上的解決方式有很多種,不外乎是在 Global.asax 加上排程去呼叫指定的頁面,以避免 Process 被停止,這些方式並沒有完全解決問題,像如果該 Process 是被使用者強制中斷時,IIS Process 無法自動被帶起來

解決方式

在 Administrative Tools –> Task Schedler 增加排程,在固定時間以 Internet Explorer 呼叫該網站頁面

排程的參數像這樣
image 

相關網站

ASP.NET Application Life Cycle筆記

相關網站

在 Blog 使用 SyntaxHighlighter 轉貼程式碼

簡介

SyntaxHighlighter 是 Alex Gorbatchev 用 CSS 與 Javascript 所開發出來的程式碼高亮度工具,可支援以下類型的程式碼,可參考官方網站上面的說明 http://alexgorbatchev.com/wiki/SyntaxHighlighter:Brushes

安裝

安裝 Syntaxhighlighter 有兩種方式,第一種將 Syntaxhighlighter Source Code 下來回來,安裝到 Blog 主機上,需注意 Blog 提供商是否提供 Javascript Host 的上傳或是 Javascript Host 的功能。第二種方式是直接引用作者提供的網頁空間

使用方式

貼上程式碼時,切換到 HTML 模式,然後用 <pre></pre> 將程式碼框起來即可!

相關網站

2010年5月9日 星期日

ASP.NET - Failed to map the path '/'.

在 Vista/Windows 7/Windows Server 2008 (R2) 的環境中,用一般使用者(非系統管理員)以 Visual Studio 2008/2010 執行某些網站會出現 Failed to map to path 的錯誤,如下圖
2009-11-08_121450

主要原因是該使用者對以下兩個檔案無讀取權限
C:\ProgramData\Microsoft\Crypto\RSA\MachineKeys\6de9cb26d2b98c01ec4e9e8b34824aa2_fc5eaf9a-a086-4bbf-ba3d-e2804ef453a1
C:\ProgramData\Microsoft\Crypto\RSA\MachineKeys\d6d986f09a1ee04e24c949879fdb506c_fc5eaf9a-a086-4bbf-ba3d-e2804ef453a1

解決的方式有3種:

  1. 將使用者加入到 IIS_IUSRS 群組,建議用此方式
  2. 開放上列兩個檔案給使用者可讀權限,一定得開放這兩個檔案的權限,用上層目錄繼承無法解決此問題
  3. 以系統管理員執行此網站