asp.net 利用IHttpModule和IRequiresSessionState控制入口登入開發錯誤解決辦法
1、VS專案中新增FilterModule.cs來控制從登陸頁面進入系統,該類程式碼如下:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.SessionState;
namespace VisualStudio
{
public class FilterModule : IHttpModule, IRequiresSessionState
{
public void Dispose()
{
}
public void Init(HttpApplication context)
{
//原因:這個事件時,Session尚未建立。要先指定型別在判斷位址列是否存在
//context.BeginRequest += new EventHandler(context_BeginRequest);
context.AcquireRequestState += (obj, e) =>
{
var app = (HttpApplication)obj;
var url = app.Request.RawUrl;
//還要先判斷下請求型別
if (url.IndexOf(".aspx") > 0)
{
//判斷非UserLogin請求且非saas平臺請求 防止進入死迴圈(此網頁包含重定向迴圈)
if (url.IndexOf("Login.aspx") < 0 )
{
if (app.Context.Session["UserLogin"] == null)
{
string loginURl = "";
string virPath = app.Request.ApplicationPath;
if (string.IsNullOrEmpty(virPath) || virPath == "/")
{
loginURl = string.Format("{0}://{1}:{2}/Login.aspx", app.Request.Url.Scheme, app.Request.Url.Host, app.Request.Url.Port);
}
else
{
loginURl = string.Format("{0}://{1}:{2}{3}/Login.aspx", app.Request.Url.Scheme, app.Request.Url.Host, app.Request.Url.Port, virPath);
}
app.Context.Response.Write("<script>alert('您尚未登入或者賬戶資訊已過期,請重新登入!');top.location='" + loginURl + "' ;</script>");
app.Context.Response.End();
}
}
}
};
}
}
}
Web.config檔案中新增配置節:
<system.web>
<httpModules>
<!--重寫IHttpModule類,需要配置的資訊-->
<add name="FilterModule" type="VisualStudio.FilterModule,VisualStudio" />
</httpModules>
<compilation debug="true" targetFramework="4.0" />
</system.web>
在專案中建立一個Login.aspx和Index.aspx,然後直接執行Index.aspx頁面,會出現下圖錯誤:
解決辦法:
該錯誤提示已經很明顯了:託管管道模式不正確
右鍵專案屬性,找到左側Web選項卡,將伺服器中由原先的“使用本地IIS Web伺服器”換成“使用Visual Studio開發伺服器”,如下圖所示:
===========================================================================
如果覺得對您有幫助,微信掃一掃支援一下:
相關文章
- 騰訊開發平臺 手機QQ登入 錯誤碼:110406 解決辦法;新浪微博sso錯誤
- Django Admin 錄入中文錯誤解決辦法Django
- SAP錯誤提示解決辦法
- dns錯誤怎麼辦 dns錯誤的解決辦法DNS
- 開機checking file錯誤的解決辦法
- 連線oracle錯誤解決辦法Oracle
- nginxFastCGI錯誤Primaryscriptunknown解決辦法NginxAST
- Unable to locate package錯誤解決辦法Package
- oracle 1455 錯誤解決辦法Oracle
- 畢設之錯誤解決辦法
- java開發管理者們常犯之錯誤與解決辦法Java
- 9個常見的Android開發錯誤及解決辦法Android
- asp.net開啟word文件出錯的解決辦法ASP.NET
- 新浪UC無法登入的解決辦法
- Idea編譯錯誤解決辦法Idea編譯
- PHP編譯錯誤及解決辦法PHP編譯
- scp出現錯誤的解決辦法
- samba一個錯誤的解決辦法!Samba
- ORA-29339錯誤解決辦法
- ORA-54013錯誤解決辦法
- 用Jmail元件發郵件錯誤的解決辦法薦AI元件
- iOS路上遇到的錯誤及解決辦法iOS
- ubuntu下import matplotlib錯誤解決辦法UbuntuImport
- ORA-12705,錯誤的解決辦法
- OpenCV1.0編譯錯誤解決辦法OpenCV編譯
- Xamarin提示安裝包錯誤解決辦法
- ORA-32004錯誤解決辦法
- SPFILE引數修改錯誤的解決辦法
- ORA-12170錯誤的解決辦法
- ORA-01846錯誤解決辦法
- Mysql出現連線錯誤解決辦法MySql
- 登錄檔無法開啟的解決辦法
- 當前頁面指令碼發生錯誤的解決辦法指令碼
- Ucenter後臺登陸驗證碼CCCC的解決方法無法登入解決辦法
- linux下誤操作startx命令後,在登入介面進不去解決辦法Linux
- ORA-39006錯誤原因及解決辦法
- Git 錯誤:fatel: loose object ... is corrupt 解決辦法GitObject
- Python——Output not utf-8錯誤解決辦法Python