用户名无法访问数据库

时间:2013-02-22 15:00:16

标签: asp.net

我使用以下命令将当前用户名存储在传递给我的存储过程然后传递到我的数据库的变量中。这是通过单击按钮启动的。

string UserName = Page.User.Identity.Name.ToString();

使用以下命令发送变量:

cmd.Parameters.AddWithValue("@UserName", UserName);

我在Web Developer 2008 Express中创建了一个Web表单,当我在Web Developer中显示浏览器时,我得到了所需的结果。当我从Mac上运行的本机浏览器(Firefox)运行网页时,我什么也得不到。 Web Developer在Windows 2008 Server安装上运行。我是否需要为Mac做一些不同的事情?我将拥有大多数使用Mac而不是Windows的用户。

这是aspx.cs的代码

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data;
using System.Data.SqlClient;



namespace WebApplication1
{
    public partial class _Default : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {

        }

        protected void GridView1_SelectedIndexChanged(object sender, EventArgs e)
        {

        }

        protected void MasterData_Selecting(object sender, SqlDataSourceSelectingEventArgs e)
        {

        }

        protected void btnUpdate_Click(object sender, EventArgs e)
        {

            using (SqlConnection con = new SqlConnection("server=(local);database=InvoiceSHC;Trusted_Connection=Yes"))
            {

                // Get the UserId of the logged in user 

                string UserName = HttpContext.Current.User.Identity.Name.ToString();
                string Timestamp = DateTime.Now.ToString();
                //Not sure why you need a SqlDataAdapter unused here.
                //SqlDataAdapter DA = new SqlDataAdapter("UpdateSHCInvoice", con);
                SqlCommand cmd = new SqlCommand("UpdateSHCInvoice", con);
                cmd.CommandType = CommandType.StoredProcedure;

                cmd.Parameters.AddWithValue("@Ref", dlRef.SelectedItem.Value);
                cmd.Parameters.AddWithValue("@PhaseName", dlPhase.SelectedItem.Value);
                cmd.Parameters.AddWithValue("@PageType", dlPageType.SelectedItem.Value);
                cmd.Parameters.AddWithValue("@Page", tbPage.Text);
                cmd.Parameters.AddWithValue("@Percent", dlPercent.SelectedItem.Value);
                cmd.Parameters.AddWithValue("@ChngType", dlChngType.SelectedItem.Value);
                cmd.Parameters.AddWithValue("@UserName", UserName);
                cmd.Parameters.AddWithValue("@Timestamp",Timestamp);
                con.Open();
                cmd.ExecuteNonQuery();

                GridView1.DataBind();

            }



        }


    }
}

1 个答案:

答案 0 :(得分:1)

我认为用户在从另一台计算机上的浏览器访问该页面时未经过身份验证,但在从服务器访问时进行身份验证。您可以通过设置如下的用户名来确认这一点:

string UserName = "";
if(HttpContext.Current.User.Identity.IsAuthenticated)
{
    UserName = HttpContext.Current.User.Identity.Name.ToString();
}
else
{
    UserName = "UnauthenticatedUser";
}

如果我是正确的,那么您需要仔细检查您的身份验证过程(web.config等)。如果您有任何问题,现在就告诉我。