0

我在我的 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 中不为空?

4

1 回答 1

1

不。winforms 中不需要遵循会员提供者的生命周期。如果您在 winforms 中使用用于 Web 请求的 dll,则不会设置 HttpContext。HttpContext 指的是当前的 web 请求,这在 winforms 中显然是缺少的。

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

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

于 2013-01-15T06:08:00.220 回答