本文講述如何在 在SharePoint 2013/2010 解決方案中添加 ashx (HttpHandler)。web
通常處理程序(HttpHandler)是·NET衆多web組件的一種,ashx是其擴展名。一個httpHandler接受並處理一個http請求,類比於Java中的servlet。類比於在Java中須要繼承HttpServlet類,在.net中須要實現IHttpHandler接口,這個接口有一個IsReusable成員,一個待實現的方法ProcessRequest(HttpContextctx) 。程序在processRequest方法中處理接受到的Http請求。成員IsReusable指定此IhttpHnadler的實例是否能夠被用來處理多個請求。json
.ashx程序適合產生供瀏覽器處理的、不須要回發處理的數據格式,例如用於生成動態圖片、動態文本等內容。瀏覽器
下面筆者將介紹如何在SharePoint 2013/2010 解決方案中添加 ashx (HttpHandler):app
1. 新建一個場解決方案spa
2. 映射 SharePoint 的Layout文件夾.net
3. 添加新項目3d
4. 選擇Application pagexml
5. 將Test.ashx的代碼修改成對象
SharePoint 2013 ( 注意替換class name )blog
<%@ 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=15.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來獲取數據,展示在前臺,達到不用刷新頁面更新數據的目的。