protected void UploadImage_Click(object sender, EventArgs e)
{
HttpPostedFile postedFile = ImageUploader.PostedFile;
string fileExtension =
Path.GetExtension(Path.GetFileName(postedFile.FileName));
if (ImageUploader.HasFile && fileExtension.ToLower() == ".jpg" ||
fileExtension.ToLower() == ".gif" || fileExtension.ToLower() == ".png")
{
Stream fs = postedFile.InputStream;
BinaryReader br = new BinaryReader(fs);
Byte[] image = br.ReadBytes((int)fs.Length);
Guid UserId = (Guid)Membership.GetUser().ProviderUserKey;
string cs = ConfigurationManager.ConnectionStrings["DefaultConnection"].ConnectionString;
using (SqlConnection con = new SqlConnection(cs))
{
string sqlcmd = "insert into ProfileImage values(@UserId, @ImageData)";
SqlCommand cmd = new SqlCommand(sqlcmd, con);
cmd.Parameters.AddWithValue("@UserId", UserId);
cmd.Parameters.AddWithValue("@ImageData", image);
con.Open();
cmd.ExecuteNonQuery();
con.Close();
ErrorLabel.Visible = true;
ErrorLabel.Text = "Upload Success!";
ErrorLabel.ForeColor = System.Drawing.Color.Green;
}
}
else
{
ErrorLabel.Visible = true;
ErrorLabel.Text = "Upload failed: Only jpg, gif, and png allowed.";
ErrorLabel.ForeColor = System.Drawing.Color.Red;
}
以上是我用于将文件上传到数据库以获取用户图像的代码。我需要知道如何编写可以返回GUID而不是null值的单元测试,以确保代码按预期工作。
基本上,我想将当前登录的用户userid从成员资格提供程序以及上载的图像添加到数据库中,以便以后轻松检索。当我通过修改数据库以接受除uniqueidentifier和插入临时用户标识的代码之外的其他内容来测试它时,插入有效。但现在我想确保我可以实际获取当前登录的用户ID并将其添加到数据库中。
当我测试这段代码时,它会说错误
Guid UserId = (Guid)Membership.GetUser().ProviderUserKey
part返回一个空值,即使我将用户添加到成员资格表中也是如此。 如何正确测试当前登录用户userid的检索?
答案 0 :(得分:1)
经过更多的挖掘和研究,在stackoverflow中找到了这个。再说一次,不是专业人士,大声笑,甚至不知道使用什么样的关键词,但我发现了这一点,我会试一试!这看起来很像我正在寻找的,一种模拟用户guid的单元测试方式。