【问题标题】:Asp.Net Unit Testing: Membership TypeLoadException for DefaultMembershipProviderAsp.Net 单元测试:DefaultMembershipProvider 的成员资格 TypeLoadException
【发布时间】:2015-03-03 04:21:09
【问题描述】:

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

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

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

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

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

更新:以下行工作正常,所以原因一定是在我的 DefaultMembershipProvider 的初始化中:

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

【问题讨论】:

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


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-03-02
      • 2010-11-04
      • 1970-01-01
      • 1970-01-01
      • 2013-03-01
      • 2013-06-27
      • 2011-02-03
      • 2018-08-11
      相关资源
      最近更新 更多