C# 自定义路由配置
2016-01-26 10:30
507 查看
1、Gloabal.asax.cs
using System.Web.Mvc; using System.Web.Routing; namespace B1EC2.CqhgCallback { public class MvcApplication : System.Web.HttpApplication { protected void Application_Start() { AreaRegistration.RegisterAllAreas(); GlobalFilters.Filters.Add(new HandleErrorAttribute()); var routes = RouteTable.Routes; routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); //routes.MapRoute("Default", "{controller}/{action}/{id}", new { controller = "CqhgCallback", action = "Index", id = UrlParameter.Optional }); routes.MapRoute("Default", "{tenatId}/{controller}/{action}/{id}", new { tenatId = "1", controller = "CqhgCallback", action = "Index", id = UrlParameter.Optional }); } } }2、CqhgCallbackController.cs
using System;using System.Web;using System.Web.Mvc;using B1EC2.CqhgCallback.Infrastructure;using B1EC2.CqhgCallback.Models;using Common.Logging;namespace B1EC2.CqhgCallback.Controllers{#region Postpublic class Post{[AllowHtml]public String data { get; set; }public Post() { }}#endregionpublic class CqhgCallbackController : Controller{readonly DefaultDbContext _dbContext;protected static readonly ILog Log = LogManager.GetLogger(typeof(CqhgCallbackController));public CqhgCallbackController(){_dbContext = new DefaultDbContext();}public String Index(){return "请使用Http Post调用!";}[HttpPost][AllowAnonymous]public String Index(Post post,string tenatId){string tenantIdStr = RouteData.Values["tenatId"].ToString();post.data = XmlHelper.DecodeBase64(post.data);post.data = SubPostData(post.data);var validate = Validate(post);if (!string.IsNullOrEmpty(validate))return validate;try{}private string SubPostData(string data) {data = data.Substring(data.IndexOf("<DTC_Message>"));data = data.Substring(0,data.IndexOf("</DTC_Message>")+14);return data;}protected override void Dispose(bool disposing){if (_dbContext != null){_dbContext.Dispose();}base.Dispose(disposing);}#region 验证一些问题public string Validate(Post pos){var validate = string.Empty;if(string.IsNullOrEmpty(pos.data))validate += "XML数据不能为空!";return validate;}#endregion}}3、关键配置
<span style="font-family: Arial, Helvetica, sans-serif;"> routes.MapRoute("Default", "{tenatId}/{controller}/{action}/{id}", new { tenatId = "1", controller = "CqhgCallback", action = "Index", id = Ur</span>虽然这里tennatId="1",但当你请求时此处的tenantId会被你请求的覆盖掉,也就是你请求是的参数,这样在下面controller中获取时就会根据不同请求参数得到不同的tenantId,这样就可以将一个回传地址或网站来提供给不同用户使用,仅是tenantId不同postman请求代码debugpost请求成功
相关文章推荐
- C#委托delegate
- Replicate String in C#
- Ubuntu 14.04 上安装 C Sharp 开发环境。
- [C#解惑] #1 在构造函数内调用虚方法
- XSD- XML Schema Definition模式定义
- C# FileStream/StreamWriter/StreamReader的区别
- C#中的构造函数
- Windows C#自动化框架
- 三层结构实现登录功能——C#版
- C# 常用加密处理
- C#使用SharpZipLib解压Zip单个文件到内存
- C# Post方式传输报文,和处理响应
- C#报错:InvalidOperationException: out of sync
- C# 日期格式化的中的 正斜杠的问题
- C#实现软件注册码算法
- c#获取带有汉字的字符串长度
- 在C#中保存Bouncy Castle生成的密钥对 【自用笔记】
- cer, pfx 创建,并且读取公钥/密钥,加解密 (C#程序实现) 【笔记】
- C#图片处理常见方法性能比较
- C#入门经典Lambda