无法从程序集“System.Web,...”加载类型“...”

Posted

技术标签:

【中文标题】无法从程序集“System.Web,...”加载类型“...”【英文标题】:Could not load type '...' from assembly 'System.Web, ...' 【发布时间】:2016-01-02 01:27:40 【问题描述】:
<system.web>
    <profile defaultProvider="TestProfileProvider" inherits="Test.Library.UserAccountProvider.TestUserProfile">
      <providers>
        <add name="TestProfileProvider" type="Test.Library.UserAccountProvider.TestProfileProvider, , Test.Library.UserAccountProvider" connectionStringName="SecurityContext" applicationName="Sigma" applicationContext="XpressPago" />
      </providers>
    </profile>
    <membership defaultProvider="TestMembershipProvider">
      <providers>
        <add name="TestMembershipProvider" type="Test.Library.UserAccountProvider.TestMembershipProvider, Test.Library.UserAccountProvider" connectionStringName="SecurityContext" passwordFormat="Clear" enablePasswordRetrieval="false" enablePasswordReset="true" requiresQuestionAndAnswer="false" requiresUniqueEmail="false" maxInvalidPasswordAttempts="3" minRequiredPasswordLength="6" minRequiredNonalphanumericCharacters="0" passwordAttemptWindow="10" applicationName="Sigma" PasswordResetLimit="45" applicationContext="XpressPago" />
      </providers>
    </membership>
    <roleManager enabled="true" defaultProvider="TestRoleProvider">
      <providers>
        <add name="TestRoleProvider" type="Test.Library.UserAccountProvider.TestRoleProvider" connectionStringName="SecurityContext" applicationName="Sigma" applicationContext="XpressPago" />
      </providers>
    </roleManager>
    <httpRuntime executionTimeout="90" maxRequestLength="1048576" useFullyQualifiedRedirectUrl="false" minFreeThreads="8" minLocalRequestFreeThreads="4" appRequestQueueLimit="100"/>
    <machineKey validationKey="196975F087819B74AC983A6D0882E5936BD0F30915A770C58E1177505D72D46F2D6F50BDB35DDF4E904AE01FD3E62726A6E63ADED231644D2D2E595A84AA76B2" decryptionKey="4496E865CAED30BA35BE7B60A06023CC3A13422F15060346" validation="SHA1" />
  </system.web>

TestMembershipProvider 没有显示任何错误,但TestUserProfile 显示以下错误:

无法加载类型 来自程序集的“Test.Library.UserAccountProvider.TestUserProfile” 'System.Web,版本=4.0.0.0,文化=中性, PublicKeyToken=b03f5f7f11d50a3a'。

关于声明return (TestUserProfile)Create(username);

【问题讨论】:

【参考方案1】:

如果它是你的类的位置,也许你应该在 name="TestProfileProvider" 行的 'type' 属性的末尾添加完整的程序集名称 (", Test.Library.UserAccountProvider")?

像这样:

  <add name="TestProfileProvider" type="Test.Library.UserAccountProvider.TestProfileProvider, Test.Library.UserAccountProvider" connectionStringName="SecurityContext" applicationName="Sigma" applicationContext="XpressPago" />

'inherits' 属性也是如此:

   <profile defaultProvider="TestProfileProvider" inherits="Test.Library.UserAccountProvider.TestUserProfile, Test.Library.UserAccountProvider">

我认为 Create 不会在哪里选择类,因为它会在“System.Web”中尝试。 当然,我认为 Test.Library.UserAccountProvider 是正确的程序集名称,如果需要,请修复它...

【讨论】:

在您的错误消息中,您可以看到在“System.Web”而不是您自己的程序集中尝试了类型加载,这就是我建议的原因。也许“继承”指令也需要一些改变。由于您没有提供很多细节,因此很难为您提供准确的解决方案。

以上是关于无法从程序集“System.Web,...”加载类型“...”的主要内容,如果未能解决你的问题,请参考以下文章

从 2012 年到 2013 年更新后无法加载文件或程序集“System.Web.Http 4.0.0”

ASP.NET Core TypeLoadException无法从程序集“System.Web”加载类型“System.Web.PreApplicationStartMethodAttribute”(

无法从程序集“System.Web,版本=4.0.0.0,文化=中性,PublicKeyToken=b03f5f7f11d50”加载类型“System.Web.UI.ParseChildrenAttr

无法加载文件或程序集'System.Web.Extensions,版本 = 1.0.61025.0 错误 [关闭]

无法加载文件或程序集'System.Web.WebPages.Razor,版本 = 3.0.0.0

VS 2015:无法加载文件或程序集'System.Web.WebPages.Razor,版本 = 2.0.0.0