您的位置:首页 > 编程语言 > C#

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请求成功
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: