在SharePoint 2013/2010 解決方案中添加 ashx (HttpHandler)

本文講述如何在 在SharePoint 2013/2010 解決方案中添加 ashx (HttpHandler)。

一般處理程序(HttpHandler)是·NET衆多web組件的一種,ashx是其擴展名。一個httpHandler接受並處理一個http請求,類比於Java中的servlet。類比於在Java中需要繼承HttpServlet類,在.net中需要實現IHttpHandler接口,這個接口有一個IsReusable成員,一個待實現的方法ProcessRequest(HttpContextctx) 。程序在processRequest方法中處理接受到的Http請求。成員IsReusable指定此IhttpHnadler的實例是否可以被用來處理多個請求。

.ashx程序適合產生供瀏覽器處理的、不需要回發處理的數據格式,例如用於生成動態圖片、動態文本等內容。

下面筆者將介紹如何在SharePoint 2013/2010 解決方案中添加 ashx (HttpHandler):

1. 新建一個場解決方案

2. 映射 SharePoint 的Layout文件夾

3. 添加新項目


4. 選擇Application page


5. 將Test.ashx的代碼修改爲

SharePoint 2013 (注意替換class name)

<%@ Assembly Name="$SharePoint.Project.AssemblyFullName$" %>
<%@ Assembly Name="Microsoft.SharePoint, Version=15.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" %>
<%@ WebHandler Language="C#" Class="Testashx.Test" %>

SharePoint 2010(注意替換class name):

<%@ Assembly Name="$SharePoint.Project.AssemblyFullName$" %>
<%@ Assembly Name="Microsoft.SharePoint, Version=14.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" %>
<%@ WebHandler Language="C#" Class="Testashx.Test" %>

6.  Test.ashx.cs 代碼

using System;
using Microsoft.SharePoint;
using Microsoft.SharePoint.WebControls;
using System.Web;

namespace Testashx
{
    public partial class Test : IHttpHandler
    {
        public bool IsReusable
        {
            get { return true; }
        }

        public void ProcessRequest(HttpContext context)
        {
            System.Web.Script.Serialization.JavaScriptSerializer jsonSerializer = new System.Web.Script.Serialization.JavaScriptSerializer();
            context.Response.ContentType = "application/json";
            var jsonResult = jsonSerializer.Serialize(new JosnResult (){Name="Abraham Cheng", Age= 29 });// return what you want
            context.Response.Write(jsonResult);
        }     
    }
    class JosnResult
    {
      public  string Name {get; set;}
       public int Age {get; set;}
    }
}
7. UnLoad 項目,編輯項目工程文件,在PropertyGroup節點中插入:

 <TokenReplacementFileExtensions>ashx</TokenReplacementFileExtensions>


8. Reload項目, 部署解決方案 

9. 驗證

     a. SharePoint 2013  驗證地址爲 .../_layouts/15/xxx/Text.ashx

    b. SharePoint 2010 驗證地址爲 .../_layouts/xxx/Text.ashx

    打開以上地址就可以返回一個Json對象了

   


在實際應用可以用Ajax來請求Text.ashx來獲取數據,展現在前臺,達到不用刷新頁面更新數據的目的。

           



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章