并非所有的代码路径有返回值

flashabcd 2007-04-22 04:07:39
一个根据用户名得到密码的函数:
private string getdbsalt(string supplyloginname)
{


SqlConnection conn = new SqlConnection(ConfigurationSettings.AppSettings ["constr"]);

SqlCommand cmd = new SqlCommand("jsjlookupuser", conn );
cmd.CommandType = CommandType.StoredProcedure;

SqlParameter sqlParam = cmd.Parameters.Add("@loginname", SqlDbType.NVarChar,50);
sqlParam.Value =supplyloginname;
try
{
conn.Open();
SqlDataReader reader = cmd.ExecuteReader();
reader.Read(); // 前进到唯一的行
// 从返回的数据流中返回输出参数
// string dbPasswordHash = reader.GetString(0);
string salt = reader.GetString(1);

reader.Close();

return salt ;


}

catch (Exception ex)
{
Label1.Text =ex.ToString ();
}
finally
{

conn.Close();
}


}

为什么报并非所有的代码路径有返回值的错,我都写了return salt ;
是什么原因
...全文
191 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
flashabcd 2007-04-22
  • 打赏
  • 举报
回复
严重抗议:blackant2(乔峰)
哥哥,你真的学过编程吗?
如是有异常
并不一定保证conn.open成功
哪儿来的conn.close
如果没有异常
已经return 退出该方法
又哪儿来的conn.close

哎......................
一地鸡毛....................
-----------------------
怎么加呢,加一个return "failed"行不行。
------------------------
返回什么关justcode(小码)
什么时
你无聊返回return null或者return string.empty都可以
当然也可以返回 "failed"
但是我知道我的老师曾经教过我
只要有可能,不要在代码中使用静态变量
-------------------------
如果你超过了20岁,建议你去买块豆腐
-------------------------

心情不好,多多原谅
------------------------------------------

说明:这段代码是微软网站上的,心情不好就不要上CSDN去指责提问的人。

原代码如下,难道不能改改么?
针对数据库验证用户凭据

1.
返回到 Logon.aspx.cs,并按以下代码中所示添加 VerifyPassword 私有帮助器方法:

private bool VerifyPassword(string suppliedUserName,
string suppliedPassword )
{
bool passwordMatch = false;
// 基于用户名从数据库获取 salt 和 pwd。
// 请参见“如何在 ASP.NET 中使用 DPAPI(计算机存储)”、“如何在企业服务中使用 DPAPI
// (用户存储)”和“如何创建 DPAPI
// 库”,以了解如何使用 DPAPI 来安全地存储
// 连接字符串的详细信息。
SqlConnection conn = new SqlConnection( "Server=(local);" +
"Integrated Security=SSPI;" +
"database=UserAccounts");
SqlCommand cmd = new SqlCommand( "LookupUser", conn );
cmd.CommandType = CommandType.StoredProcedure;

SqlParameter sqlParam = cmd.Parameters.Add("@userName",
SqlDbType.VarChar, 255);
sqlParam.Value = suppliedUserName;
try
{
conn.Open();
SqlDataReader reader = cmd.ExecuteReader();
reader.Read(); // 前进到唯一的行
// 从返回的数据流中返回输出参数
string dbPasswordHash = reader.GetString(0);
string salt = reader.GetString(1);
reader.Close();
// 现在使用用户输入的 salt 和密码
// 并将它们连接在一起。
string passwordAndSalt = String.Concat(suppliedPassword, salt);
// 现在对它们进行哈希计算
string hashedPasswordAndSalt =
FormsAuthentication.HashPasswordForStoringInConfigFile(
passwordAndSalt, "SHA1");
// 现在验证它们。
passwordMatch = hashedPasswordAndSalt.Equals(dbPasswordHash);
}
catch (Exception ex)
{
throw new Exception("验证密码时出现异常。 " + ex.Message);
}
finally
{
conn.Close();
}
return passwordMatch;
}
jeson1985 2007-04-22
  • 打赏
  • 举报
回复
try
{
conn.open
return "";
}
catch(Exceiption ex)
{
ex.tostring();
return string.empty;
}
finally
{
conn.close;
}
dotnba 2007-04-22
  • 打赏
  • 举报
回复
blackant2(乔峰):)
ldz0812 2007-04-22
  • 打赏
  • 举报
回复
string salt = null;
try
{
...
salt = reader.GetString(1);
reader.Close();
}
...
finally
{
...
}
return salt ;
blackant2 2007-04-22
  • 打赏
  • 举报
回复
try{
conn.Open();
reader.Close();
return salt ;
}
catch{}
finally
{
conn.Close();
}

哥哥,你真的学过编程吗?
如是有异常
并不一定保证conn.open成功
哪儿来的conn.close
如果没有异常
已经return 退出该方法
又哪儿来的conn.close

哎......................
一地鸡毛....................
-----------------------
怎么加呢,加一个return "failed"行不行。
------------------------
返回什么关justcode(小码)
什么时
你无聊返回return null或者return string.empty都可以
当然也可以返回 "failed"
但是我知道我的老师曾经教过我
只要有可能,不要在代码中使用静态变量
-------------------------
如果你超过了20岁,建议你去买块豆腐
-------------------------

心情不好,多多原谅
ldz0812 2007-04-22
  • 打赏
  • 举报
回复
return salt ;放在最后,试试
小码 2007-04-22
  • 打赏
  • 举报
回复
行,只要是string兼容的。
flashabcd 2007-04-22
  • 打赏
  • 举报
回复
怎么加呢,加一个return "failed"行不行。
小码 2007-04-22
  • 打赏
  • 举报
回复
catch块里要加个Return
flashabcd 2007-04-22
  • 打赏
  • 举报
回复
自己顶一下!!

62,041

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧