You can use javascript to manipulate the history
<script type="text/javascript">
window.history.pushState(null, null, '<%=Request.Url.LocalPath%>');
</script>
You'd probably only want to run that code if there was actually a param on the query though. It's the only real solution but it obviously requires js and it doesn't remove the old url, simply injects a new step in the history so the user can "go back" to see the original url with id (and of course refresh, change the id etc).
I'm going to assuming what you really want to do is pass data on the url that the user will never see or can't alter, but I'm afraid that is simply impossible.
Things you shouldn't spend time doing | The ASP.NET Forums[
^]