代码之家  ›  专栏  ›  技术社区  ›  Danny G

ASP。NET重写路径未按预期工作/URL在浏览器中更改

  •  3
  • Danny G  · 技术社区  · 17 年前

    当我尝试在ASP中重写URL时。NET我发现用户浏览器上的URL发生了变化。我正在使用WCF REST服务,我想更改您访问URL的方式。请参阅下面的代码示例。

    public class FormatModule : IHttpModule
    {
        #region IHttpModule Members
    
        public void Dispose()
        {
            throw new NotImplementedException();
        }
    
        public void Init(HttpApplication application)
        {
            application.BeginRequest += new EventHandler(application_BeginRequest);
        }
    
        void application_BeginRequest(object sender, EventArgs e)
        {
            HttpContext context = HttpContext.Current;
            if (context.Request.RawUrl.Contains(".pox")) 
                context.RewritePath("~/Lab1Service.svc?format=pox", false);
            else if (context.Request.RawUrl.Contains(".json")) 
                context.RewritePath("~/Lab1Service.svc?format=json", false);
        }
    
        #endregion
    }
    

    http://localhost/Lab1Service.svc.pox ,相反,浏览器中的URL会更改为 http://localhost/Lab1Service.svc?format=pox .

    3 回复  |  直到 17 年前
        1
  •  4
  •   Larsenal    15 年前

    你的“修复”实际上隐藏了扩展,因此它会通过完整路由。NET管道。

        2
  •  2
  •   Danny G    13 年前

    我解决了这个问题。如果在.svc扩展名后不包含尾随反斜杠,则URL将重新编译而不是重写。

    这是我的原创作品

    context.RewritePath("~/Lab1Service.svc?format=pox", false);

    context.RewritePath("~/Lab1Service.svc/?format=pox", false);
        3
  •  0
  •   Jan Remunda    17 年前

    我在重写器meodule中使用了另一个上下文,也许问题出在这里

    public void Init(HttpApplication context){application = context;}
    

    初始化HttpApplication上下文,然后重写路径

    application.Context.RewritePath(rewritedUrl, Config.RebasePath);
    
    推荐文章