如何在 在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=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来获取数据,展现在前台,达到不用刷新页面更新数据的目的。

时间: 2024-11-13 06:53:48

如何在 在SharePoint 2013/2010 解决方案中添加 ashx (HttpHandler)的相关文章

在SharePoint 2013/2010 解决方案中使用一般处理程序

本文讲述如何在 在SharePoint 2013/2010 解决方案中添加 ashx (HttpHandler). 一般处理程序(HttpHandler)是·NET众多web组件的一种,ashx是其扩展名.一个httpHandler接受并处理一个http请求,类比于Java中的servlet.类比于在Java中需要继承HttpServlet类,在.net中需要实现IHttpHandler接口,这个接口有一个IsReusable成员,一个待实现的方法ProcessRequest(HttpConte

SharePoint 2013/2010 根据当前用户的某个属性过滤搜索结果

本文讲述如何在SharePoint 2013/2010 中根据当前用户的某个属性过滤搜索结果. 最近客户有一个需求,就是根据用户所在的国家(User Info List里面有Country字段),在搜索时只显示该用户所在国家的记录(对应的list 有Country 字段). 一般来说SharePoint 搜索是根据当前用户的权限来决定是否可以搜索到对应的记录,但是过是这样的话,需要将列表的所有记录都打破权限记录,这是非常损耗性能的,而且这样的权限结构维护起来很复杂. 本文将使用 ISecurit

在使用SQL server High Availability 的SharePoint 2013 Farm环境中使用Import-SPMetadataWebServicePartitionData

本文讲述笔者在在使用SQL server High Availability 的SharePoint 2013 Farm环境中使用Import-SPMetadataWebServicePartitionData遇到的问题,希望对大家有帮助. 笔者最近使用Export-SPMetadataWebServicePartitionData 从开发环境导出Metadata ,然后使用Import-SPMetadataWebServicePartitionData将Metadata 备份文件导入到使用SQ

SharePoint 2013/2010 在一个列表或文档库内移动列表项,文档和目录位置而保持last modify by 等系统字段保持不变

本文讲述SharePoint 2013/2010 在一个列表或文档库内移动列表项.文档和目录位置而保持last modify by 等系统字段保持不变的解决方式. 近期遇到客户一个需求,在一个列表或文档库内移动列表项,文档和目录位置而保持last modify by 等系统字段保持不变. 研究出来了.不敢独享.特此共享出来给同鞋们做參考: using Microsoft.SharePoint; using System; using System.Collections.Generic; usi

Powershell 功能函数大全(Sharepoint 2013/2010)

Powershell 功能函数大全 说明: 本文章讲述powershell操作大全,是笔者多时积累完成.一步步从底层网站架构搭建,到网页内容的呈现, 均由powershell完成. 考虑到网站内容框架的移植,比如从开发环境到测试环境,再到产品环境,底层框架内容可由Powershell一键部署,这样更加方便以及可维护性.考虑到项目架构搭建的异同,初步分为以下步骤: 1. Poweshell 对 Site Column的完整操作 2. Powershell 对 Content Type的完整操作 3

每日学习心得:SharePoint 2013 自定义列表项添加Callout菜单项、文档关注、SharePoint服务端对象模型查询

前言: 前一段时间一直都比较忙,没有什么时间进行总结,刚好节前项目上线,同时趁着放假可以好好的对之前遇到的一些问题进行总结.主要内容有使用SharePoint服务端对象模型进行查询.为SharePoint 自定义列表项添加callout菜单.希望能够给大家带来一些帮助. 1.  在aspx页引用可视化Web部件 有时候会需要在页面中引用项目中创建的可视化Web部件,具体步骤有以下这几步: 1) 在aspx页面顶部注册该可视化Web部件 示例如下: <%@ Register Tagprefix=&qu

VS2010在空解决方案中添加项目

如题,在空解决方案中添加第一个项目的时候会看不到那个solution解决方案文件,而是你当前添加的项目,当你再添加其他项目的时候就悲催了,找不到这个solution,只能在这个项目文件上新加文件,很郁闷. 原来有个选项 工具-选项-项目和解决方案-总是显示解决方案,把这个选项勾选了就可以在solution里面添加新的项目了.截图如下. VS2010在空解决方案中添加项目,布布扣,bubuko.com

新建解决方案 在解决方案中添加项目中,解决方案消失的解决办法

新建空白解决方案的步骤:文件--新建项目--其他项目类型--Visual Studio 解决方案 这样就建立出了一个空白解决方案. 然后在资源管理器中可以添加项目,但是添加项目的时候会发现,解决方案消失了,解决办法  工具--选项--项目和解决方案(如果看不到这个,在下方有一个显示所有设置打勾),然后右边有一个 总是显示解决方案.勾上,解决方案就出现了 记录一下. 新建解决方案 在解决方案中添加项目中,解决方案消失的解决办法,布布扣,bubuko.com

VS在一个解决方案中添加多个项目(工程)

VS2015在一个解决方案中添加多个项目(工程) 首先要肯定的一点是,在一个解决方案(solution)中是可以添加多个项目(project)的,这多个项目之间存在两种关系:       1.项目间彼此独立,各自有各自的入口,只是组织在一个解决方案中便于管理:       2.项目间存在相互调用,只存在一个入口. 在这里只讨论第一种关系: 项目间彼此独立,每个项目都有自己的入口,则同一时间解决方案只能有一个活动入口,相当于只有一个项目存在, 通过设置可以选择哪个项目作为活动项目,则之后的编译.运