无法在自定义配置文件提供程序中加载类

时间:2010-04-19 08:36:56

标签: c# console-application asp.net-profiles

我在C#中编写一个小型控制台应用程序,它引用了一个实现自定义.net Profile提供程序的自定义程序集。我已将以下部分添加到我的app.config文件中,该文件引用了自定义类和程序集。

<system.web>
<profile defaultProvider="MyCompanyProfileProvider" inherits="MyCompany.Web.User.GenericProfile" automaticSaveEnabled="false">
    <providers>
        <clear/>
        <add name="MyCompanyProfileProvider" connectionStringName="defaultDatabase" applicationName="/myApplication" type="MyCompany.Web.ProfileProvider, MyCompany.Web"/>
    </providers>
    <properties>
        <add name="JobRoleId" type="System.Int32"/>
        <add name="LastCompetencyId" type="System.Int32" defaultValue="0"/>
        <add name="MixSettings" type="System.Xml.XmlDocument"/>
    </properties>
</profile></system.web>

然而,当我在调试模式下运行应用程序时,我收到以下错误,就好像它在System.Web程序集中查找而不是在app.config文件中指定的那个。

无法从程序集'System.Web,Version = 2.0.0.0,Culture = neutral,PublicKeyToken = b03f5f7f11d50a3a'加载类型'MyCompany.Web.User.GenericProfile'。

我有一个本地网络应用程序,它也使用程序集和自定义配置文件提供程序,并且没有任何问题。我已经检查了引用的程序集被复制到输出目录。

任何想法??

3 个答案:

答案 0 :(得分:20)

我终于找到了答案,这很简单!! (他说经过几个小时的搜索和调试后)。

我只需要明确说明我的自定义提供程序所在的程序集。我认为在添加提供程序时指定类型时我只需要这样做。

但是,您需要定义何时在inherits属性中定义配置文件。像这样:

在:

<profile defaultProvider="MyCompanyProfileProvider"
         inherits="MyCompany.Web.User.GenericProfile"
         automaticSaveEnabled="false">

后:

<profile defaultProvider="MyCompanyProfileProvider" 
         inherits="MyCompany.Web.User.GenericProfile, MyCompany.Web" 
         automaticSaveEnabled="false">

希望这可以帮助其他人解决同样的问题。

答案 1 :(得分:0)

尝试删除指定类和程序集的逗号后面的额外空格,但我认为不会修复它。

您的应用正在System.Web程序集中查找自定义类,这非常奇怪。

我会使用fuslogvw来了解有关失败的详细信息。

答案 2 :(得分:0)

在我浪费了宝贵的时间来追逐这个问题之后,你的解决方案让我感到遗憾。像往常一样,我在与微软的产品战斗,而不是我需要解决的实际IT问题。我的App.Config线现在看起来似乎工作正常:

<profile defaultProvider="DefaultProfileProvider" inherits="SmartTariffs_V13.ProfileCommon, SmartTariffs_V13">
  <providers>
    <add name="DefaultProfileProvider" type="System.Web.Providers.DefaultProfileProvider, System.Web.Providers, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" connectionStringName="DefaultConnection" applicationName="/" />
  </providers>
</profile>

其中SmartTariffs_V13是Project的名称,SmartTariffs_V13.ProfileCommon是该项目中.cs文件的名称。我发现这没有添加你的&#34; automaticSaveEnabled&#34;标签,但嘿嘿......