Asp.net 为什么在WindowsForms中使用SimpleMembership时HttpContext为空?
我在ASP.NET MVC4应用程序中实现了一个简单的成员身份。但是现在我需要实现创建用户并验证其中的登录名 所以我开始把我最近项目的一些代码复制到这个。举例来说,这就是崩溃的部分Asp.net 为什么在WindowsForms中使用SimpleMembership时HttpContext为空?,asp.net,asp.net-mvc,asp.net-mvc-4,asp.net-membership,simplemembership,Asp.net,Asp.net Mvc,Asp.net Mvc 4,Asp.net Membership,Simplemembership,我在ASP.NET MVC4应用程序中实现了一个简单的成员身份。但是现在我需要实现创建用户并验证其中的登录名 所以我开始把我最近项目的一些代码复制到这个。举例来说,这就是崩溃的部分 WebSecurity.InitializeDatabaseConnection("SimpleMembershipConnection", "UserProfile", "UserId", "UserName", autoCreateTables: true);
WebSecurity.InitializeDatabaseConnection("SimpleMembershipConnection",
"UserProfile", "UserId", "UserName", autoCreateTables: true);
bool val = WebSecurity.Login("1010", "pass"); // here throws the exception
错误显示:
对象引用未设置为对象的实例。参数名称:
httpContext
另外,我只导入了一些库,如WebMatrix.WebData、WebMatrix.Data和System.Web
这是我的整个app.config
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<configSections>
<section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=5.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
</configSections>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
</startup>
<connectionStrings>
...
</connectionStrings>
<entityFramework>
<defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework" />
</entityFramework>
<roleManager enabled="true" defaultProvider="simple">
<providers>
<clear />
<add name="simple" type="WebMatrix.WebData.SimpleRoleProvider, WebMatrix.WebData" />
</providers>
</roleManager>
<membership defaultProvider="simple">
<providers>
<clear />
<add name="simple" type="WebMatrix.WebData.SimpleMembershipProvider, WebMatrix.WebData" />
</providers>
</membership>
...
如何修复HttpContext中不为null的异常?否。winforms中不需要遵循成员资格提供程序生命周期。如果在winforms中使用用于web请求的dll,则不会设置HttpContext。HttpContext指的是当前的web请求,winforms中显然缺少这一点 您可以分离身份验证业务逻辑,并将其放在不同的dll中。您可以在windows应用程序和成员资格提供程序中引用此库
如果必须通过web对用户进行身份验证,则在windows应用程序中执行此操作的方法是查询web服务。然后可以在服务器端使用SimpleMembershipProvider 为了清楚起见,您的问题说明了windows窗体;您正在尝试在winforms应用程序中使用web安全模块吗?
HttpContext
是一个ASP.NET构造-仅存在于winforms显然不是的web应用程序中…@nunespascal no,不yet@marc_s没有办法在桌面应用程序中使用此API吗?没有-HttpContext
是HTTP处理管道的一部分-这在Winforms应用程序中不存在。可能是WCF服务应用程序在这样做吗?如果您决定编写Web服务,您肯定可以使用WCF。