我在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?
答案 0 :(得分:1)
没有。 winforms中没有必要遵循成员资格提供者的生命周期。如果您在winforms中使用针对Web请求的dll,则不会设置HttpContext。 HttpContext指的是当前的Web请求,这在winforms中显然是缺失的。
您可以将您的身份验证业务逻辑分开并将其放在另一个dll中。您可以在Windows应用程序和会员提供商中引用此库。
如果您必须通过Web对用户进行身份验证,那么在Windows应用程序中执行此操作的方法是查询Web服务。然后,您可以在服务器端使用SimpleMembershipProvider。