asp.net url重写 用Global.asax

Global.asax写些方法可以实现地址url的重写,怎么实现的,为什么我总是不成功,能不能给一个最简单的例子,加入一个解决方案里就一个index.aspx如何重写它,... Global.asax 写些方法可以实现地址url的重写,怎么实现的,为什么我总是不成功,能不能给一个最简单的例子,加入一个解决方案里就一个index.aspx如何重写它,什么规则呢?谢谢了! 展开
 我来答
齐心中正
2015-01-08 · 超过49用户采纳过TA的回答
知道答主
回答量:62
采纳率:0%
帮助的人:70.8万
展开全部

其实你的意思就跟实现mvc的路由实现的方式:

原理就是在加载application的时候实现路由转换


就像mvc模式实现的原理一样的:


就是定义一个httpHandler来实现


给你发一段代码:

 public class HttpServiceHandler : IHttpHandler
    {

        private ServerInfo serverInf;

        private string serverName = string.Empty;

        private string methodName = string.Empty;

        public ServerInfo ServerInformation
        {
            get
            {
                return serverInf;
            }
            set
            {
                serverInf = value;
            }
        }

        #region IHttpHandler 成员

        public bool IsReusable
        {
            get { throw new NotImplementedException(); }
        }

        public void ProcessRequest(HttpContext context)
        {
            try
            {
                if (ServerInformation != null)
                {
                    serverName = ServerInformation.ParseNamePair.ServiceName.ToString();

                    methodName = ServerInformation.ParseNamePair.MethodName.ToString();

                    //string path = context.Server.MapPath();

                    Assembly ass = Assembly.Load("FrameWorkTest");

                    string assname = ass.FullName.ToString();

                    Type type = ass.GetType("FrameWorkTest." + serverName);

                    MethodInfo method = type.GetMethod(methodName);

                    object obj = Activator.CreateInstance(type);

                    string returnValue = (string)method.Invoke(obj, null);

                    context.Response.Write("<body>");
                    context.Response.Write("<div>");
                    context.Response.Write(returnValue);
                    context.Response.Write("</div>");
                    context.Response.Write("</body>");

                }
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }

        #endregion
    }


 /// <summary>
    /// Url路由转换器的Module
    /// </summary>
    public class UrlRoutingModule : IHttpModule
    {
        #region IHttpModule 成员

        public void Dispose()
        {
            throw new NotImplementedException();
        }

        public void Init(HttpApplication context)
        {
            //没有起到转向HttpHandler
            //context.PostMapRequestHandler += new EventHandler(context_PostMapRequestHandler);

            context.ResolveRequestCache += new EventHandler(context_PostMapRequestHandler);
        }

        void context_PostMapRequestHandler(object sender, EventArgs e)
        {
            HttpApplication app = (HttpApplication)sender;

            //解析出来了路径

            NamePair namePair = FrameWorkRule.ParseNamePair(app.Request);

            if (namePair != null)
            {
                HttpServiceHandler handler = new HttpServiceHandler();

                handler.ServerInformation = new ServerInfo(namePair);

                app.Context.RemapHandler(handler);
            }
            //else
            //{
            //    throw new ArgumentOutOfRangeException("运用的HttpHandler不正确!");
            //}

        }
        #endregion
    }
    
    这个就是原理,就是用写一个httpHander 来重新定义实现跳转,
    
    
    这是大牛会飞的鱼的一篇博客你可以参考:http://www.cnblogs.com/fish-li/archive/2012/02/12/2348395.html

        Good Luck! 希望能够帮助到你!


        如果可以,请采纳!谢谢!

Storm代理
2023-08-29 广告
"StormProxies是全球大数据IP资源服务商,其住宅代理网络由真实的家庭住宅IP组成,可为企业或个人提供满足各种场景的代理产品。点击免费测试(注册即送1G流量)StormProxies有哪些优势?1、IP+端口提取形式,不限带宽,I... 点击进入详情页
本回答由Storm代理提供
yqsky3964
2015-01-07 · TA获得超过1875个赞
知道小有建树答主
回答量:1184
采纳率:0%
帮助的人:667万
展开全部
你想干嘛吧!具体需求是什么!
追问
项目最外层有一个index,aspx文件,我想通过index.html?id=we访问这个页面,并且地址栏也显示index.html?id=we , 还有就是如果index,aspx在一个pages文件夹里,又怎么通过这种形式访问呢? 其实也就是把url重写。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式