寫入及設定著作權處理常式
- 在 %systemroot%\inetpub\wwwroot 目錄下建立一個名為 'pictures' 的目錄。在提升權限的命令殼層中執行下列命令:
md %systemdrive%\inetpub\wwwroot\pictures - 將一些數位圖片 (此逐步解說假設這些圖片為 JPG 檔案) 複製到新的 pictures 目錄。如果您手上沒有任何 JPG 檔案,請使用下列圖片:http://wallpaper.iis7.org/gallery/iis7-highlight.jpg
注意:因為 Windows Server 2008 上設定的高 Internet Explorer 安全性,您可能會看見一個安全性對話方塊,說明該網站已封鎖。若要下載 IIS 7.0 底色圖案,請將 wallpaper.iis7.org 新增到信任的網站清單中。 - 使用 appcmd 命令列工具建立一個應用程式
%windir%\system32\inetsrv\appcmd add app -site.name:"Default Web Site"
-path:/pictures -physicalPath:%systemdrive%\inetpub\wwwroot\pictures - 在 pictures 目錄下建立 App_Code 目錄:
md %systemdrive%\inetpub\wwwroot\pictures\App_Code - 開啟 [記事本] 並將以下程式碼貼到其中。
using System;
using System.Web;
using System.Drawing;
using System.Drawing.Imaging;
namespace IIS7Demos
{
public class imageCopyrightHandler :IHttpHandler
{
public void ProcessRequest(HttpContext context)
{
string message = "Copyright © IIS 7.0 Team";
try {
string languageHeader;
languageHeader = context.Request.Headers["Accept-Language"].Substring(0,2).ToUpper();
switch (languageHeader)
{
case ("DE"):
message = "IIS 7.0 Team - Alle Rechte vorbehalten";
break;
case ("ES"):
message = "Marca Registrada IIS 7.0 Team";
break;
default:
break;
}
}
catch
{
// if something fails, e.g. no Language-Accept header, we go with the english message
}
InsertCopyrightMessage ( context,
message,
"yellow"
);
}
void InsertCopyrightMessage(
HttpContext context,
string message,
string color
)
{
try
{
// get physical path of request
string strPath = context.Request.PhysicalPath;
// load as bitmap
Bitmap jpgFile = new Bitmap(strPath);
// add copyright message
Graphics g = Graphics.FromImage(jpgFile);
Font f = new Font("Arial", 20, GraphicsUnit.Pixel);
SolidBrush sb = new SolidBrush(Color.FromName(color));
// write copyright message to bitmap
g.DrawString( message,
f,
sb,
5,
jpgFile.Height - f.Height - 5
);
f.Dispose();
g.Dispose();
// save it to response stream
jpgFile.Save( context.Response.OutputStream,
System.Drawing.Imaging.ImageFormat.Jpeg
);
jpgFile.Dispose();
}
catch (Exception e)
{
context.Response.Write(e.Message);
}
}
public bool IsReusable
{
get { return true; }
}
}
}
Save the file as %systemdrive%\inetpub\wwwroot\pictures\App_Code\imageCopyrightHandler.cs - 建立處理常式,在要求 JPG 檔案時執行此程式碼:
%windir%\system32\inetsrv\appcmd set config /section:system.web.Server/handlers
/+[name='imageCopyrightHandler-Integrated',path='*.jpg',
verb='GET,HEAD',type='IIS7Demos.imageCopyrightHandler',preCondition='integratedMode'] - 我們也必須啟用目錄瀏覽功能,因為目前沒有預設的文件:
%windir%\system32\inetsrv\appcmd set config "Default Web Site/pictures"
-section:directoryBrowse -enabled:true - 在 Internet Explorer 網址列中輸入以下網址,以瀏覽到圖片應用程式:http://localhost/picures。按一下 IIS 7.0 目錄清單中的 JPG 檔案連結。您應該會看見已插入著作權訊息的 JPG 影像。
- 查看程式碼。您看到著作權訊息會根據瀏覽器傳送的 "Accept-Language" 標頭而不同。如果您安裝的是德國版的 Microsoft Server 2008,著作權訊息會是 "IIS 7.0 Team - Alle Rechte vorbehalten";如果您安裝西班牙文版,則是 "Marca Registrada IIS 7.0 Team"。若安裝其他所有語言,著作權訊息將是 "Copyright © IIS 7.0 Team"。測試此程式碼的一個方式是變更 Internet Explorer 傳送的 "Accept-Language" 標頭:
- 開啟 [Internet Explorer]。
- 開啟 [工具] 功能表並按一下 [網際網路選項]。
- 按一下 [語言] 按鈕。
- 按一下 [新增…] 按鈕,並為西班牙文新增 "es",為德文新增 "de"。
- 使用 [上移] 按鈕將新語言移至清單頂端。
- 瀏覽到 http://localhost/pictures/%3cyour_jpg_file%3e.jpg。著作權訊息已變更為您所設定的語言。
- 不要忘記回到 [語言] 對話方塊重設語言,否則之後可能會獲得西班牙文或德文網頁。