Visual Studioで美しく実行されるASP.Netアプリケーション(.Net 4、C#、Webフォーム、プロダクションSQLボックスを指します)同じWindows 7ボックスでホストされているIISサーバーにロードされると、2番目のセッション変数のロードを拒否します。 VSデバッグでは、アプリケーションにログインしている人物の名前が表示され、通常はActive Directoryから取得されますが、ログインする別のADユーザーにオプションを提供します。 (ASP.Netのログインコントロールを使用することは実際には実現可能ではありません。)IIS 7.5はASP.Netで1つのセッション変数を取得しますが、2番目にはありません
問題はプロダクションサーバーではデバッグできませんが、Visual Studioで動作するため、デバッグでは何も表示されません。 IISまたはweb.configで何を変更する必要があるかについての考えはありますか?私はコードの背後にあるインポートを含めました。
私の知恵の終わりでは、これはあまり安全でなく、Amazon.comのリンクのように見えますが、これは良いもののクエリ文字列に戻る準備ができています。助けて。
トムHottle
using System;
using System.IO;
using System.Net;
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;
using System.DirectoryServices;
using System.Configuration;
namespace ITIncidentMgt
{
public partial class _Default : System.Web.UI.Page
{
private SqlConnection conn;
private string dbConnect =
ConfigurationManager.ConnectionStrings["AssetMgtString"].ConnectionString;
private string SQL;
private string sErr;
private string hello;
private string user_name;
private int userID;
private string user;
private string field;
private string val;
private string add;
private string wHere = " WHERE ";
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
user_name = Environment.UserName;
if (DAC.OpenSqlConnection(ref conn, dbConnect, out sErr))
{
if (Session["u"] == null)
{
SQL = "SELECT * FROM Users WHERE Username = '" + user_name + "'";
SqlCommand cmd = new SqlCommand(SQL, conn);
SqlDataReader dr = cmd.ExecuteReader();
while (dr.Read())
{
userID = Convert.ToInt32(dr["UserID"]);
user = dr["DisplayName"].ToString();
}
dr.Dispose();
cmd.Dispose();
Session["u"] = userID;
Session["n"] = user;
}
else
{
userID = Convert.ToInt32(Session["u"]);
user = Session["n"].ToString();
}
hello = "Welcome, " + user + ".";
lblHello.Text = hello;
セッション["u"]が - > not null < - の場合、セッション["n"]は決して設定されないため、 "user"は設定されません。 – kd7