为什么HttpContext在Windows窗体中使用简单成员资格为空?

时间:2013-01-15 05:03:05

标签: asp.net asp.net-mvc asp.net-mvc-4 asp.net-membership simplemembership

我在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?

1 个答案:

答案 0 :(得分:1)

没有。 winforms中没有必要遵循成员资格提供者的生命周期。如果您在winforms中使用针对Web请求的dll,则不会设置HttpContext。 HttpContext指的是当前的Web请求,这在winforms中显然是缺失的。

您可以将您的身份验证业务逻辑分开并将其放在另一个dll中。您可以在Windows应用程序和会员提供商中引用此库。

如果您必须通过Web对用户进行身份验证,那么在Windows应用程序中执行此操作的方法是查询Web服务。然后,您可以在服务器端使用SimpleMembershipProvider。