C# 替换ASP.NET中的defaut身份验证模块

C# 替换ASP.NET中的defaut身份验证模块,c#,.net,asp.net,asp.net-mvc,httpmodule,C#,.net,Asp.net,Asp.net Mvc,Httpmodule,假设我编写了自己的身份验证模块,实现了IHttpModule。这不是真的做,但有很好的资源,所以我可以找出它 还有一些教程介绍如何将自定义创建的模块添加到Web.config。但是如何替换一些默认模块呢?这就是如何从执行路径中删除默认身份验证模块的方法 我可以从Web.config中删除以下行吗 <authentication mode="Forms"> <forms loginUrl="~/Account/LogOn" timeout="2880"/> <

假设我编写了自己的身份验证模块,实现了
IHttpModule
。这不是真的做,但有很好的资源,所以我可以找出它

还有一些教程介绍如何将自定义创建的模块添加到
Web.config
。但是如何替换一些默认模块呢?这就是如何从执行路径中删除默认身份验证模块的方法

我可以从
Web.config
中删除以下行吗

<authentication mode="Forms">
    <forms loginUrl="~/Account/LogOn" timeout="2880"/>
</authentication>

如果我删除它们,默认的身份验证模块还会工作吗

当然,即使我不使用这个模块,也没有必要删除它。。。但这会节省一些处理器时间,我会感觉更好

这很容易,但不是困难的部分:我可以替换
HttpContext
实现吗?我有自己的会话类,名为
session
,我不希望
HttpSessionState
处于
HttpContext
中。我还想替换
HttpContext
User
属性。所以我想我需要创建自己的
HttpContext
实现,并强制我的应用程序以某种方式使用它。 我该怎么做


请随意回答我问题的任何部分或全部,如您喜欢。

您可以将
模式设置为
。我会给你的
HttpContext
起个不同的名字。


<system.webServer> 
<modules> 
  <remove name="FormsAuthenticationModule" />    
  <remove name="UrlAuthorization" />    
  <remove name="DefaultAuthentication" />    
</modules> 
</system.webServer> 

这样如何?

您通过替换身份验证、会话等解决的真正问题是什么?现有ASP.NET运行时有哪些限制?也许你可以看看ASP.NET以外的东西?为什么不编写你自己的自定义
MemebershipProvider
?@Sanjeevakumar Hiremat:没有真正的限制。。。我只是不喜欢默认的会员制——它迫使我存储密码、安全问题和其他一些我认为不需要的东西(我使用的是OpenID身份验证)。因此,我的数据模型感觉不自然。此外,它还将会话视为在浏览器打开时持续的内容。。。我想保留它,直到他们记录(像这样)。最后,我想为一个用户提供更多的会话。考虑到所有这些,我决定编写自己的会话系统会更清晰、更容易,而不是尝试调整existing@Daniel怀特:请阅读我之前的评论——我希望它也能回答你的问题。你所说的“我会给你的HttpContext起个不同的名字”是什么意思?@Dastro你可以叫它
CustomHttpContext
对不起,我还是不明白。所以我创建了一个新类
CustomHttpContext
继承自
HttpContext
?然后呢?我如何使用它来代替默认的
HttpContext
?嗯,现在我意识到可能很难知道它是否有效(没有使用模块)您确定这会有效吗?或者您可以建议一种方法来检查它吗?是否真的可以这样删除
DefaultAuthentication
模块?我尝试过,但这会在applicationHost.config中产生一条错误消息,我认为lockItem=“true”。