請幫忙!我正在使用Visual Studio,ASP.NET C#(.Net 4)編程: 我是一個PHP轉換器,試圖使用會話創建一個簡單的登錄頁面。眼看因爲我完全新的ASP.NET我用這個代碼從某處在互聯網上:ASP.NET會在創建會話時丟失CSS#
的Login.aspx:
<asp:TextBox ID="txtUserName" runat="server"></asp:TextBox>
<asp:TextBox ID="txtPassword" runat="server"></asp:TextBox>
<asp:Button ID="submit" runat="server" Text="Submit" onclick="submit_Click" />
<asp:Label ID="Label1" runat="server" Text="Label"></asp:Label>
Login.aspx.cs:
protected void send_Click(object sender, EventArgs e)
{
if (txtUserName.Text == "admin" && txtPassword.Text == "admin")
{
Session["Authenticate"] = "Yes";
Response.Redirect("Default.aspx");
}
else
Label1.Text = "Login failed";
}
全球.asax.cs
void Session_Start(object sender, EventArgs e)
{
// Code that runs when a new session is started
Session["Authenticate"] = "";
CheckLogin();
}
void Application_OnPostRequestHandlerExecute()
{
CheckLogin();
}
void CheckLogin()
{
string Url = Request.RawUrl;
int count = Url.Length - 10;
string TestUrl = Url.Substring(count);
string SessionData = Session["Authenticate"].ToString();
if (SessionData == "" && TestUrl != "Login.aspx")
{
Response.Redirect("~/Login.aspx");
}
}
每當我嘗試在瀏覽器中運行此代碼時,我的CSS文件不會加載。這似乎與global.asax文件相關聯,因爲如果我註釋掉以上在global.asax.cs代碼片段中顯示的所有代碼,css會正確加載。
我試圖通過源代碼,這提供了以下錯誤打開CSS文件在瀏覽器中:
Session state is not available in this context.
Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.
Exception Details: System.Web.HttpException: Session state is not available in this context.
Source Error:
Line 45: int count = Url.Length - 10;
Line 46: string TestUrl = Url.Substring(count);
Line 47: string SessionData = Session["Authenticate"].ToString();
Line 48: if (SessionData == "" && TestUrl != "Login.aspx")
Line 49: {
Source File: D:\MyTestWebsite\Global.asax.cs Line: 47
我已經使用主題使用App_Themes文件和在Web.config中定義它也試圖 - 給出一樣的問題。只有當會話相關的代碼被刪除時,css纔會顯示。
任何想法是什麼導致這???
我會使用[Forms Authentication Provider](http://msdn.microsoft.com/en-us/library/9wff0kyh.aspx)代替。 – 2012-07-11 09:18:18
感謝您的資源,它已經看起來像一個更好的方式去! – Nevan 2012-07-11 09:24:32
當css文件從該行傳遞,然後沒有會話,所以一個解決方案是檢查'if(Session){}'然後運行它,或者使用System.IO.Path.GetExtension(HttpContext .Current.Request.Path)'。當然,所有這些都不如Tim提供的表單身份驗證提供程序好 – Aristos 2012-07-11 09:29:47