Asp.net 为什么在WindowsForms中使用SimpleMembership时HttpContext为空?

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);

我在ASP.NET MVC4应用程序中实现了一个简单的成员身份。但是现在我需要实现创建用户并验证其中的登录名

所以我开始把我最近项目的一些代码复制到这个。举例来说,这就是崩溃的部分

            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。