 <p>I was having a similar problem. Route values that were passed to my controller action were being reused when I tried to redirect the user with <strong>RedirectToAction</strong>, even if I didn't specify them in the new <strong>RouteValueDictionary</strong>. The solution that I came up with (after reading counsellorben's post) with was to clear out the <strong>RouteData</strong> for the current request. That way, I could stop MVC from merging route values that I didn't specify.</p> <p>So, in your situation maybe you could do something like this:</p> <pre><code>[CustomAuthorize] [HttpGet] public ActionResult Approve(int id) { _customerService.Approve(id); this.RouteData.Values.Clear(); //clear out current route values return RedirectToAction("Search"); //Goes to bad url } </code></pre>