bu kadar uğraşmana hiç gerek yok. bir tane global.asax dosyası oluşturacaksın.
içerisinde kodların aşağıdaki gibi olacak
<%@ Application Language="C#" %>
<%@ Import Namespace="System.Web.Routing" %>

<script runat="server">

void Application_Start(object sender, EventArgs e)
{
// Code that runs on application startup
RoutingAyarlari(RouteTable.Routes);
}

void RoutingAyarlari(RouteCollection routes)
{
routes.MapPageRoute("program", "{PraogramAdi_program_{ProgramId}", "~/Kategori.aspx");

}

void Application_End(object sender, EventArgs e)
{
// Code that runs on application shutdown

}

void Application_Error(object sender, EventArgs e)
{
// Code that runs when an unhandled error occurs

}

void Session_Start(object sender, EventArgs e)
{
// Code that runs when a new session is started

}

void Session_End(object sender, EventArgs e)
{
// Code that runs when a session ends.
// Note: The Session_End event is raised only when the sessionstate mode
// is set to InProc in the Web.config file. If session mode is set to StateServer
// or SQLServer, the event is not raised.

}

</script>

tabi program adını yazarken türkçe karakterleri ve boşlukları silmeyi unutma.
daha sonra tek yapacağın bir link verirken
programlar.aspx?programid=5 yerine
programadi_program_5 şeklinde link vermek olacak.