我有一个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();
答案 0 :(得分:0)
问题是&#34; ClientAuthenticationMembershipProvider&#34;被设置为默认提供者。我不知道它可以从哪里来;它必须由NuGet或其他东西添加。在我原来的Web.Config中,它不存在。通过删除它,一切都恢复了。