using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.SessionState;
using System.Web.Routing;

namespace WeiChat
{
public class Global : System.Web.HttpApplication
{
public static void RegistrRoutes(RouteCollection routes)
{
#region
/*
routes.Add(
//路由名称
"index",
//传入的URL
"index/{id}",
//不允许用户直接访问物理URL
//路由参数的默认值
new RouteValueDictionary { { "id", @"\d+" } }, new UrlWrite());
*/
#endregion
routes.Add(new Route("{resource}.axd/{*pathInfo}", new StopRoutingHandler()));
routes.Add(new Route("{category}/{action}", new UrlWrite()));
//routes.Add(new Route("{category}/{action}/{*value}",new UrlWrite()));
}

protected void Application_Start(object sender, EventArgs e)
{
RegistrRoutes(RouteTable.Routes);
}
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.Routing;
using System.IO;

namespace WeiChat
{
public class UrlWrite:IRouteHandler
{
public IHttpHandler GetHttpHandler(RequestContext requestContext)
{
return new MyPage(requestContext);
}
}
public class MyPage : IHttpHandler {
public RequestContext RequestContext { get; set; }
public MyPage(RequestContext context)
{
this.RequestContext = context;
}
//可以直接通过这个接口调用,那我直接调用index2.ashx传递过去不就可以了啦 是吧
public virtual void ProcessRequest(HttpContext context)
{
index index = new global::WeiChat.index();
index.RequestContext = RequestContext;
index.ProcessRequest(context);
#region 其他代码
/*
index1.index2 po= new index1.index2();
po.RequestContext = RequestContext;
po.ProcessRequest(context);

/*
//先获取POST数据,因为如果不是POST数据的话,会出现错误的
string temp1 = app.StreamToString(context.Request.InputStream);
app.WriteLog("UrlWrite:"+temp1);
string abc = "";
HttpRequest Request=context.Request;
foreach (string key in Request.QueryString.Keys)
{
abc+= Request.QueryString[key].ToString()+":";
}
app.WriteLog("abc:" + abc);
RouteValueDictionary Values = RequestContext.RouteData.Values;
string category = Values.ContainsKey("category") ? Values["category"].ToString() : "index1";
string action = Values.ContainsKey("action") ? Values["action"].ToString() : "";
app.WriteLog("action:" + action);
string temp = context.Request["MS_HttpContext"];
app.WriteLog("temp:" + temp);
string url = string.Format("/index1/{0}.ashx?id={1}&", category, action);
app.WriteLog("url:" + url + Request.QueryString.ToString());
//string url1 = "/index1/index2.ashx?id=addsa&b=abcedfe";
//context.Server.Execute(url + Request.QueryString.ToString());
context.Response.Write("通过这个接口直接回复");
/*
RouteValueDictionary Values=RequestContext.RouteData.Values;
string page = Values.ContainsKey("page") ? Values["page"].ToString() : "index";
string id = Values.ContainsKey("id") ? Values["id"].ToString() : "";
string url = string.Format("/{0}.ashx?id={1}", page, id);
// context.Server.Transfer(@"~" + url, true);
// context.Response.Redirect(url);
// context.Server.Transfer(url,true);
// context.Server.Transfer(url, false);
if(context!=null&& context.Server!=null)
context.Server.Execute("/index.ashx");
app.WriteLog("url:" + url);
*/
#endregion
}
public bool IsReusable
{
get { return false; }
}
}
}
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Web;
using System.Xml;
using System.Xml.Linq;
using Newtonsoft.Json;
using System.Web.Routing;

namespace WeiChat
{
/// <summary>
/// index 的摘要说明
/// </summar
public class index :IHttpHandler
{
public RequestContext RequestContext { get; set; }
public void ProcessRequest(HttpContext context)
{
context.Response.ContentType = "text/html";
#region 获取路由参数
if (RequestContext == null)
{
context.Response.Write("不是公司用户,无法提供服务!!!");
return;
}
RouteValueDictionary Values = RequestContext.RouteData.Values;
string category = Values.ContainsKey("category") ? Values["category"].ToString() : "";
string action = Values.ContainsKey("action") ? Values["action"].ToString() : "";
//对账户进行判断
if (dbaccess.getloginInfo(action).Rows.Count < 1)
{
context.Response.Write("不存在此帐号!!!");
return;
}
#endregion
context.Response.Write(html);
}

public bool IsReusable
{
get
{
return false;
}
}
}
}