1

以下を使用して、ストアド プロシージャに渡され、次にデータベースに渡される変数に現在のユーザー名を格納しています。これは、ボタンのクリックで開始されます。

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

変数は次のコマンドで送信されます。

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

Web Developer 2008 Express で Web フォームを作成しました。Web Developer でブラウザーを表示すると、目的の結果が得られます。Mac で実行しているネイティブ ブラウザ (Firefox) から Web ページを実行すると、何も表示されません。Web 開発者は、Windows 2008 Server インストールで実行されています。Mac では別のことをする必要がありますか? Windows ではなく Mac を使用するユーザーの大多数がいるでしょう。

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();

            }



        }


    }
}
4

1 に答える 1

1

他のパソコンのブラウザからページにアクセスする場合は認証されていませんが、サーバーからアクセスする場合認証されていると思います。次のようにユーザー名を設定することで、これを確実に確認できます。

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

私が正しければ、認証手順(web.configなど)を再確認する必要があります。ご不明な点がございましたら、お気軽にお問い合わせください。

于 2013-02-22T16:29:08.383 に答える