寫入及設定著作權處理常式

  • 在 %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" 標頭:
    1. 開啟 [Internet Explorer]。
    2. 開啟 [工具] 功能表並按一下 [網際網路選項]。
    3. 按一下 [語言] 按鈕。
    4. 按一下 [新增…] 按鈕,並為西班牙文新增 "es",為德文新增 "de"。
    5. 使用 [上移] 按鈕將新語言移至清單頂端。
    6. 瀏覽到 http://localhost/pictures/%3cyour_jpg_file%3e.jpg。著作權訊息已變更為您所設定的語言。
    7. 不要忘記回到 [語言] 對話方塊重設語言,否則之後可能會獲得西班牙文或德文網頁。

posted on 2011-03-12 22:20  ewyb  阅读(206)  评论(0编辑  收藏  举报

导航