如何在不使用 web.config 中的角色的情况下拒绝对 asp.net 中页面的直接访问(通过键入完整的 url)。我用过:
if (Session.IsNewSession)
            Response.Redirect("Default.aspx");
它的问题是在第一次一切正常并且重定向工作正常,但是如果我在同一个浏览器中打开一个新选项卡并再次输入 URL,它会失败。如何解决?谢谢
尝试这个:
第 1 页
Context.Items.Add("somevar","someval");
第2页
if ( Context.Items["somevar"] == null )
{
    // the page is not redirected from Page 1
}
使用 session 可以解决这个问题。
构建一个 HttpModule 并在 context_BeginRequest 中获取当前 URL。稍后有条件地重定向到默认页面。
public class RedirectionModule : IHttpModule
{
    void context_BeginRequest(object sender, EventArgs e)
    {
        //this user already already eligible to go inside page ? 
        if (Session["eligible-to-go-inside"] == null)
        {
        //new user
        //check current request url is default.aspx
        //if not forward to  default page
        }
    }
}
在 default.aspx 页面中,如果用户完全满足进入内页的要求(如登录),则设置
Session["eligible-to-go-inside"] = "yes";