Asp.Net单元测试:DefaultMembershipProvider的成员类型TypeLoadException

时间:2015-01-05 15:35:43

标签: asp.net unit-testing asp.net-membership membership-provider

我有一个ASP.Net Web窗体应用程序,我现在正在为它编写一些单元测试。 测试代码在以下行抛出TypeLoadException:

if (Membership.GetUser("some name") == null)

异常文本说" System.Web.Providers.DefaultMembershipProvider"在程序集" System.Web,Version = 4.0.0.0,Culture = neutral,PublicKeyToken = b03f5f7f11d50a3a"无法加载。正常运行应用程序时,一切都可以在内置测试服务器以及实时IIS服务器上正常运行。我只是将Web表单应用程序中的Web.config复制到Unit测试项目中。我还应该提到其他数据库连接(例如实体框架)工作正常。这是相关的配置部分:

<membership defaultProvider="ClientAuthenticationMembershipProvider">
  <providers>
    <clear />
    <add name="DefaultMembershipProvider" type="System.Web.Providers.DefaultMembershipProvider" connectionStringName="DefaultConnection" enablePasswordRetrieval="false" enablePasswordReset="true" requiresQuestionAndAnswer="false" requiresUniqueEmail="false" maxInvalidPasswordAttempts="10" minRequiredPasswordLength="6" minRequiredNonalphanumericCharacters="0" passwordAttemptWindow="10" applicationName="/" passwordFormat="Hashed" />
    <add name="ClientAuthenticationMembershipProvider" type="System.Web.ClientServices.Providers.ClientFormsAuthenticationMembershipProvider, System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" serviceUri="" />
  </providers>
</membership>

我还在Unit测试项目中设置了对System.Web的引用,但我仍然得到了提到的异常。有没有人知道为什么这不适用于单元测试项目?

更新:以下行工作正常,因此在我的DefaultMembershipProvider的初始化中必须有一些原因:

System.Web.Providers.DefaultMembershipProvider test= new System.Web.Providers.DefaultMembershipProvider();

1 个答案:

答案 0 :(得分:0)

问题是&#34; ClientAuthenticationMembershipProvider&#34;被设置为默认提供者。我不知道它可以从哪里来;它必须由NuGet或其他东西添加。在我原来的Web.Config中,它不存在。通过删除它,一切都恢复了。