Hướng dẫn tạo SharePoint Web Part với BotDetect CAPTCHA
Bài viết này mô tả các bước để tạo SharePoint Web Part sử dụng BotDetect ASP.NET CAPTCHA control. Nó là một Web Part rất đơn giản cho phép bạn xác thực câu trả lời của người dùng, so sánh nó với ký tự được hiển thị trên hình ảnh CAPTCHA.
Yêu cầu
- Microsoft Visual Studio 2005 hoặc 2008
- Microsoft Windows SharePoint Services 2007
- BotDetect ASP.NET CAPTCHA v2.0.11 hoặc mới hơn — nếu bạn chưa có bạn có thể tải về phiên bản dùng thử miễn phí
Giả định rằng bạn đang dùng Visual Studio 2005 hoặc 2008 trên máy chủ chạy WSS (Windows SharePoint Services) hoặc MOSS (Microsoft Office SharePoint Server) 2007.
Bắt đầu bằng cách tải về dự án mẫu SharePoint Web Part.Nếu bạn muốn dùng ví dụ mẫu trực tiếp trên trang SharePoint của bạn, bạn chỉ cần build dự án như bước 9-12.
Bước 1-8 chỉ cách tạo dự án Web Part , bạn có thể làm theo nếu bạn muốn tạo dự án Web Part — và thay đổi đoạn mã cho phù hợp với yêu cầu dự án SharePoint của bạn.
Bước 1: Tạo dự án mới Web Part Library
Nếu bạn đang dùng Visual Studio 2008:
- Trên menu File, chọn New Project
- Trong hôp thoại New Project, chọn Visual C# Projects, sau đó chọn Web, và cuối cùng chọn kiểu dự án là ASP.NET Server Control
- Đặt tên "LanapWebPart" và chỉ định đường dẫn cho dự án, rồi click OK
Nếu bạn đang dùng Visual Studio 2005:
- Trên menu File, chọn New, rồi chọn Project
- Trong hôp thoại New Project, chọn Visual C# Projects, sau đó chọn Web Control Library template
- Đặt tên "LanapWebPart" và chỉ định đường dẫn cho dự án, rồi click OK
Để tạo Web Part, bạn cần phải thêm tham khảo đến Microsoft.SharePoint, System.XML và Lanap.BotDetect.
Nếu bạn muốn tham khảo đến BotDetect Captcha từ thư mục Bin của một trang SharePoint nặc danh, tài khoản truy cập nặc danh IIS (IUSR_<SERVER_NAME>) phải được cấp quyền Read tới Lanap.BotDetect.dll. Cách khác bạn có thể tham khảo tới Lanap.BotDetect.dll từ GAC.
Bước 2: Thiết lập cấu hình dự án
Trước khi viết mã cho Web Part, bạn phải thay đổi các thông số sau trong phần thiết lập của dự án:
- Thiết lập số phiên bản
- Strong-name the assembly
Để thiết lập số phiên bản:
- Trong Solution Explorer, click đôi vào AssemblyInfo.cs.
- Chỉnh sửa dòng:
[assembly: AssemblyVersion("1.0.*")]để nó đọc :[assembly: AssemblyVersion ("1.0.0.0")]
Để strong-name the assembly:
- Click phải vào tên dự án và chọn properties
- Chọn tab Signing
- Chọn mục "Sign the assembly"
- Trong "Choose a strong name key file" chọn "<New...>"
- Trong hộp thoại new, điền tên và mật khẩu nếu cần
- Lưu các thiết lập
Bước 3: Thêm chỉ dẫn namespace
- Thêm các dòng sau vào phần đầu của file:
using Microsoft.SharePoint.WebPartPages; using System.Xml.Serialization; using System.Web.UI.HtmlControls; using Lanap.BotDetect;
Bước 4: Định nghĩa dữ liệu Toolbox
- Thay thế dòng:
[ToolboxData("<{0}:WebCustomControl1 runat=server>{0}:WebCustomControl1>")]với dòng sau:[ToolboxData("<{0}:LanapSimpleWebPart runat=server>{0}:SimpleWebPart>")]
Bước 5: Thừa kế từ lớp cơ sở của WebPart
- Thay thế dòng:
public class WebCustomControl1 : WebControl
vớipublic class LanapSimpleWebPart : WebPart
Bước 6: Định nghĩa XML namespace cho toàn bộ lớp WebPart
- Thêm dòng sau lên trên phần khai báo lớp WebPart:
[XmlRoot(Namespace="LanapWebPart")]
Bước 7: Định nghĩa luận lý và hiển thị Web Part
- Sau khi bạn hoàn thành những bước trên, bạn có thể định nghĩa luận lý và hiển thị Web Part. Chúng ta sẽ thêm đối tượng Lanap.BotDetect.Captcha (để hiển thị hình ảnh CAPTCHA), một TextBox (để nhập ký tự CAPTCHA), một Button (xác thực CAPTCHA), và một Label (hiển thị kết quả xác thực CAPTCHA).
using System; using System.Collections.Generic; using System.ComponentModel; using System.Text; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; using Microsoft.SharePoint.WebPartPages; using System.Xml.Serialization; using System.Web.UI.HtmlControls; using Lanap.BotDetect; namespace LanapWebPart { [XmlRoot(Namespace = "LanapWebPart")] [ToolboxData("<{0}:LanapSimpleWebPart runat=server>{0}:SimpleWebPart>")] public class LanapSimpleWebPart : WebPart { private TextBox _inputText; private Button _submitButton; private Label _messageLabel; private Lanap.BotDetect.Captcha _captchaControl; protected override void CreateChildControls() { base.CreateChildControls(); _captchaControl = new Lanap.BotDetect.Captcha(); _captchaControl.ID = "LanapCaptcha"; _inputText = new TextBox(); _inputText.ID = "InputText"; _submitButton = new Button(); _submitButton.ID = "SubmitButton"; _submitButton.Text = "Validate"; _submitButton.Click += new EventHandler(submitButton_Click); _messageLabel = new Label(); _messageLabel.ID = "MessageLabel"; this.Controls.Add(_captchaControl); this.Controls.Add(_inputText); this.Controls.Add(_submitButton); this.Controls.Add(_messageLabel); } void submitButton_Click(object sender, EventArgs e) { string captchaText = ((TextBox)Controls[1]).Text.Trim().ToUpper(); ((TextBox)Controls[1]).Text = null; if (_captchaControl.Validate(captchaText)) { ((Label)Controls[3]).Text = "Success!"; } else { ((Label)Controls[3]).Text = "Error!"; } } } }
Step 8: Tạo một file định nghĩa Web Part (.dwp)
File định nghĩa Web Part (.dwp) đơn giản là là một file xml chứa các thuộc tính thiết lập của Web Part. Để đưa Web Part vào trang Web Part, chỉ cần tải file .dwp. Sau khi tải Web Part, bạn có thể hiển thị Web Part bằng cách kéo thả vào một trong những khu vực của trang Web Part.
Có hai thuộc tính cần phải có trong file .dwp: Assembly và TypeName. Tuy nhiên, để hiển thị tên mặc định và mô tả của Web Part sau khi đưa vào, bạn nên thêm thuộc tính Title và Description. Nếu bạn muốn thiết lập thuộc tính khác của Web Part trong lúc đưa vào, bạn cũng có thể định nghĩa thêm ở file .dwp. Một file .dwp có dạng như sau:
<?xml version="1.0"?> <WebPart xmlns="http://schemas.microsoft.com/WebPart/v2"> <Assembly>AssemblyName(with no .dll extension), Version=VersionNumber, Culture=Culture, PublicKeyToken=PublicKeyToken</Assembly> <TypeName>WebPartNamespace.WebPartClassName</TypeName> <Title>DefaultWebPartTitle</Title> <Description>WebPartDescription</Description> </WebPart>Web Part của bạn .dwp trông giống như sau:
<?xml version="1.0"?> <WebPart xmlns="http://schemas.microsoft.com/WebPart/v2"> <Assembly>LanapWebPart, Version=1.0.0.0, Culture=Neutral, PublicKeyToken=def148956c61a16b</Assembly> <TypeName>LanapWebPart.LanapSimpleWebPart</TypeName> <Title>Lanap Simple Web Part</Title> <Description>This web part shows Lanapsoft BotDetect Captcha image and validates user input</Description> </WebPart>
Bước 9: Đăng ký Web Part như là một SafeControl
- Mở file web.config của trang SharePoint.
- Thêm các dòng sau vào phần <SafeControls> :
<SafeControl Assembly="LanapWebPart, Version=1.0.0.0, Culture=neutral, PublicKeyToken=def148956c61a16b" Namespace="LanapWebPart" TypeName="*" Safe="True" /> - Thay thế giá trị PublicKeyToken (def148956c61a16b) với giá trị của Web Part. Để xác định đúng giá trị PublicKeyToken cho thuộc tính của Assembly của thẻ <SafeControl>, dùng lệnh sn.exe :
sn.exe -T C:\inetpub\wwwroot\bin\SimpleWebPart.dll
Bước 10: Đăng ký Http Handlers Module
- Thêm các dòng sau vào phần <system.web> của file "Web.config":
<httpHandlers> <add verb="*" path="LanapCaptcha.ashx" type="Lanap.BotDetect.CaptchaHandler, Lanap.BotDetect" /> </httpHandlers> Hoặc, nếu bạn muốn tải Lanap.BotDetect.dll từ GAC, thay đổi khai báo httpHandlers thành:
<add verb="*" path="LanapCaptcha.ashx" type="Lanap.BotDetect.CaptchaHandler, Lanap.BotDetect, Version=2.0.15.0, Culture=neutral, PublicKeyToken=74616036388b765f"/>
- Thêm các dòng sau vào phần <appSettings> của file "Web.config":
<appSettings> <add key="LBD_RequestPath" value="LanapCaptcha.ashx" /> </appSettings>
- Thay đổi khai báo <sessionState> để bao gồm thuộc tính sessionIDManagerType với giá trị sau:
<sessionState mode="InProc" cookieless="AutoDetect" timeout="20" sessionIDManagerType=" Lanap.BotDetect.Persistence.CustomSessionIDManager, Lanap.BotDetect" />Đây là giải pháp tạm thời để âm thanh CAPTCHA hoạt động đúng trong IE 7.0 Vista và Google Chrome, như giải thích trong Hỏi đáp về BotDetect ASP.NET CAPTCHA. - Chắc chắn rằng ASP.NET Session State được cho phép trong phần <httpModules> của SharePoint web.config file - nếu những thành tố sau bị thiếu hoặc bị comment, xin hãy thêm vào:
<httpModules> <add name="Session" type="System.Web.SessionState.SessionStateModule" /> </httpModules> - Chắc chắn rằng ASP.NET Session State được cho phép trong phần <pages> của SharePoint web.config file - giá trị của thuộc tính enableSessionState phải được gán về true:
<pages enableSessionState="true" enableViewState="true" enableViewStateMac="true" validateRequest="false" pageParserFilterType="Microsoft.SharePoint.ApplicationRuntime. SPPageParserFilter, Microsoft.SharePoint, Version=12.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" asyncTimeout="7">
Bước 11: Triển khai Web Part
- Để triển khai Web Part trong SharePoint site, copy assembly vào thư mục C:\inetpub\wwwroot\bin của máy chủ SharePoint (hoặc thư mục toàn cục C:\windows\assembly)
Bước 12: Import Web Part vào trang Web Part
Để sử dụng và kiểm thử Web Part, import nó vào trang Web Part trên máy chủ chạy WSS (Windows SharePoint Services) hoặc MOSS (Microsoft Office SharePoint Server) 2007.
- Mở một trang Web Part trên máy chủ.
- Chọn Edit Page từ menu Site Actions bên góc phải phía trên của trang, và click Add a Web Part trong một trong các vùng.
- Trong hộp thoại Add Web Parts, click Advanced Web Part ở góc phải bên dưới.
- Trong Add Web Parts, click Import.
- Xác định đường dẫn cho file SimpleWebPart.dwp, và click vào nút Upload. Sau khi uploading, trang sẽ được refresh, và "My Simple Web Part" sẽ được hiện lên dưới Web Part đã được import.
- Kéo biểu tượng tới gần "My Simple Web Part" trên một vùng của trang Web Part.
- Gõ vài ký tự vào textbox, và click Set Web Part Title để kiểm thử part.
Phiên bản hiện tại của BotDetect
- BotDetect ASP.NET CAPTCHA v2.0.152009–11–23
- BotDetect ASP CAPTCHA v2.0.92009–02–12
Xin lưu ý
Trang này là bản dịch tiếng Việt không chính thức của trang gốc tiếng Anh: How To create a SharePoint Web Part with BotDetect CAPTCHA và có thể không chính xác, không đầy đủ hoặc không cập nhật.
Cập nhật ngày 2009-11-30. Áp dụng cho BotDetect ASP.NET CAPTCHA v2.0.15 và BotDetect ASP CAPTCHA v2.0.9.






