• DNN 7.0的Module中调用WebApi


    1、新建项目。有两种途径:一种是建立普通的类库;另一种是通过VS2012中的模板(http://christoctemplate.codeplex.com/)建立一个正规额Mudule项目。为了讲解方便,我们使用第二种方式。

    image

    2、添加以下6个Dll引用(Dnn网站主目录下的Bin文件夹)

    DotNetNuke.dll
    DotNetNuke.Web.dll
    System.Net.Http.dll
    System.Net.Http.Formatting.dll
    System.Web.Http.dll
    System.Web

    image

    3、新建一文件夹用来存储WebApi相关文件,此处我们命名为“WebApi”,添加路由类“RouteMapper.cs”和测试类“WelcomeController.cs(控制器添加规则也要遵循MVC4.0 WebAPI规则,以Controller结尾)”。注意:添加时,两个均为类文件,而不是(特别是第二个)WebApi类。如下图:

    image

    RouteMapper.cs代码:

    using System;
    using DotNetNuke.Web.Api;
    using System.Web.Http;
    
    namespace Christoc.Modules.DNNModule1.WebApi
    {
        public class RouteMapper : IServiceRouteMapper
        {
            public void RegisterRoutes(IMapRoute mapRouteManager)
            {
                mapRouteManager.MapHttpRoute("DNNModule1", "default", "{controller}/{action}/{name}", new { name = RouteParameter.Optional }, new[] { "Christoc.Modules.DNNModule1.WebApi" });
            }
        }
    }

    其中:mapRouteManager.MapHttpRoute格式为:

    DNNModules1 –>  模块名

    default –> 路由名称,随便起个名字。同MVC中的Web API

    "{controller}/{action}/{name}" –> 控制器,行为,参数。同MVC中的Web API

    new { name = RouteParameter.Optional }, –> name 参数的默认只,可省略。同MVC中的Web API

    new[] { "Christoc.Modules.DNNModule1.WebApi" } –> 控制器所在的命名空间

    WelcomeController.cs代码:

    using System;
    using System.Net;
    using System.Net.Http;
    using System.Web.Http;
    using DotNetNuke.Web.Api;
    
    namespace Christoc.Modules.DNNModule1.WebApi
    {
        /// <summary>
        /// API接口参数数据模型
        /// </summary>
        public class ApiDataContent
        {
            /// <summary>
            /// 自定义数据类型(Json格式)
            /// </summary>
            public object Data { get; set; }
    
            /// <summary>
            /// 用户权限授权码
            /// </summary>
            public string AuthKey { get; set; }
        }
    
        public class WelcomeController : DnnApiController
        {
            [AllowAnonymous]
            [HttpGet]
            public HttpResponseMessage HelloZhangps()
            {
                return Request.CreateResponse(HttpStatusCode.OK, "Hello Zhangps!");
            }
    
            [AllowAnonymous]
            [HttpGet]
            public HttpResponseMessage HelloWorld(string name)
            {
                return Request.CreateResponse(HttpStatusCode.OK, "Hello World!" + name);
            }
    
            [AllowAnonymous]
            [HttpPost]
            public HttpResponseMessage PostWorld(ApiDataContent content)
            {
                return Request.CreateResponse(HttpStatusCode.OK, "Post World!" + content.AuthKey);
            }
        }
    }
    其中:ApiDataContent 为复杂参数

    4、Web API接口调用方法:/DesktopModules/DNNModule1/API/Welcome/PostWorld

    5、示例:

    image

  • 相关阅读:
    Arcgis地理处理工具案例教程——批量提取多个栅格的范围边界矢量
    win10 windows10自动修复系统
    ArcGIS案例教程—E00格式批量导入成要素类
    Python正则表达式多行匹配问题
    学习ArcGIS开发的途径有哪些
    Arcgis空间分析案例教程——计算空间分布范围
    ArcGIS地理建模批处理教程——批量添加文件名作为字段值
    ArcGIS地理建模批处理教程——批量去除Z值和M值
    华为NM存储卡与Micro SD存储卡对比分析
    EDT
  • 原文地址:https://www.cnblogs.com/zhangpengshou/p/3079319.html
Copyright © 2020-2023  润新知