C# 第404页';运行SQL语句时重新定向,然后重新定向

C# 第404页';运行SQL语句时重新定向,然后重新定向,c#,asp.net,webforms,single-sign-on,response.redirect,C#,Asp.net,Webforms,Single Sign On,Response.redirect,我遇到了一个非常奇怪的错误,我对ASP.NET一点也不在行,但我正在帮助开发一个单一登录应用程序,我在重定向用户时遇到了问题。我将尽可能地保持它的简单性,这就是它的工作原理: 1.)他们来自另一个网站,它传递一个带有他们ID的登录对象 2.)在页面加载时,我们使用该ID在数据库中查找并获取他们的信息,如果他们缺少信息,他们必须填写 3.)如果他们没有丢失任何信息,它会将他们的ID插入活动会话表,然后将他们重定向到最终的网站 问题是,当页面加载并且它从单一登录对象接收数据时,我可以很好地执行SQL

我遇到了一个非常奇怪的错误,我对ASP.NET一点也不在行,但我正在帮助开发一个单一登录应用程序,我在重定向用户时遇到了问题。我将尽可能地保持它的简单性,这就是它的工作原理:

1.)他们来自另一个网站,它传递一个带有他们ID的登录对象

2.)在页面加载时,我们使用该ID在数据库中查找并获取他们的信息,如果他们缺少信息,他们必须填写

3.)如果他们没有丢失任何信息,它会将他们的ID插入活动会话表,然后将他们重定向到最终的网站

问题是,当页面加载并且它从单一登录对象接收数据时,我可以很好地执行SQL insert语句;但是当我运行SQLINSERT语句,然后将它们重定向到另一个页面时,该页面只有404s。当重定向被放置在那里时,我们还得到一个单点登录错误,只是说它无法完成。我们注册SQL语句已运行,但它们没有重定向;就像我说的,它只是404

为什么会发生这种情况?以下是代码中的一般流程:

protected void Page_Load(object sender, EventArgs e)
{
     SSOObject x = ServiceProvider.RecieveSSO(Request);
     userID = x.ID;

     SqlConnection conn = new SqlConnection(connString);
     conn.Open();
     SqlCommand comm = ("INSERT INTO etc...");

     comm.Parameters.AddWithValue("@ID", userID);

     comm.ExecuteNonQuery();
     conn.Close();
     comm.Dispose();

     // It works fine up to here, but if I add this it 404's:
     Response.Redirect("http://ourwebsite.com/user/etc...");
}
提前感谢所有尝试过的人,这让我有点困惑


编辑:遗漏一条重要信息。如果我对SSO代码进行注释,并将ID作为核心,那么整个过程都会工作

我只需传入false(参数用于结束页面的执行),如下所示:


您正在显式地将URL传递给重定向方法,在实际代码中您使用的是userID变量还是其他什么?例如,您是否使用类似Response.Redirect(“/user/”&userID)?你能从浏览器发布URL吗?浏览器是否正在尝试导航到?我的猜测是重定向和SSO不能很好地协同工作。我们从SSO对象获取它们的ID,然后我生成一个随机字符串,并将它们的用户ID和随机字符串插入到一个表中(用作会话ID),因此当它们被重定向时,我们只是查找随机字符串,以便我们知道它与什么ID关联。所以url应该是“+随机字符串;根据你的评论,你应该很容易就能解决这个问题。如果你是硬编码,它可以工作,但是你使用了一个变量,但它不能工作,那么我会做两件事来发现问题-a:在你的变量randomString上设置一个断点,并确保它有一个值B:如果它不是,确保你将它转换为字符串。如果看不到确切的代码,就很难帮助进行故障排除(例如,您发布的代码工作正常)
Response.Redirect("http://website.com", false);