2013年3月20日

ASP.NET如何分辨Web site和Web Application

在ASP.NET 2.0 開始,增加了Web Site的專案,這種專案不需要事先compile,非常適合變動性高的企業內部網站,另外一種專案就是.net 1.1使用的Web Application,它必須要事先建置,這裡我們來討論一下這兩種專案:

 

  1. Web Site
    建立方式: vs--> 新增網站

    辨識方式: .cs是用codefile指向, 這類型的專案aspx的檔頭長的如下:
    <%@ Page Language="C#" AutoEventWireup="true" 
    CodeFile="Default.aspx.cs" Inherits="_Default" %>

    程式修改:
    cs: codefile後的檔案在執行階段會使用, 因此你修改.cs或是<%%>裡的程式碼, 放到網站下會進行所謂 compiled on the fly(即時編譯)
    aspx: 直接修改
  2. Web Applicaiton
    建立方式: vs--> 新增專案,選asp.net web應用程式

    辨識方式:用codebehind指向.cs, 而inherite多加了專案"預設命名空間"-WebApplication1, 變成WebApplication1._Default, aspx的檔頭長的如下:
    <%@ Page Language="C#" AutoEventWireup="true"
    CodeBehind="Default.aspx.cs" Inherits="WebApplication1._Default" %>

    程式修改:
    cs:這類cs檔執行階段不會使用, CodeBehind標記只是讓asp.net辨識要去bin找dll
    因此這類型的專案, 你修改.cs或是<%%>裡的程式碼,必須要事先compile,並把bin下的dll複製到網站上,
    部署時, 一般要停掉網站再重開或是回收集區比較保證使用到新dll
    apsx:除了<%%>外, server control的參數/html/javascript 都可以直接修改不需compile, 但user要refresh網頁

此外這兩種專案也有相轉換的方式:

  1. WebSite to Web Application
    Converting Visual Studio Website to Web Application Project
    http://msdn.microsoft.com/en-us/library/aa983476(v=vs.100).aspx
  2. Web Application to Web Site
    - 在VS-開啟網站-打開該Web application
    - 該網站儲存一個新方案.
    - 刪除所有 "*.designer" 檔.
    - 修改檔案檔頭 (包含*.ASCX and *.ASPX), 改網頁前置詞"codebehind" 為 "codefile".
    - 更改目錄 "Old_App_Code" 為 "App_Code".
    - 完成.

參考

    How does IIS know if it's serving a Web Site or a Web Application project?

    ASP.NET 2.0 - Web Site vs Web Application project

    Introduction to Web Application Projects

    http://forums.asp.net/t/1374036.aspx/1

沒有留言:

張貼留言