ajax timer control do the exactly same as you required
Code
<asp:scriptmanager id="ScriptManager1" runat="server" xmlns:asp="#unknown" />
<asp:timer runat="server" id="UpdateTimer" interval="5000" ontick="UpdateTimer_Tick" xmlns:asp="#unknown" />
<asp:updatepanel runat="server" id="TimedPanel" updatemode="Conditional" xmlns:asp="#unknown">
<triggers>
<asp:asyncpostbacktrigger controlid="UpdateTimer" eventname="Tick" />
</triggers>
<contenttemplate>
<asp:label runat="server" id="DateStampLabel" />
</contenttemplate>
</asp:updatepanel>
protected void UpdateTimer_Tick(object sender, EventArgs e)
{
Response.Write("<script>alert('Time Over')</script>");
Response.Redirect("result.aspx");
}
interval="5000" mean 5sec, you just need to modify this value 30min.
30min= 60000*30