从Console调用WebSecurity.InitializeDatabaseConnection会出现Assembly not found错误

时间:2014-11-25 20:11:53

标签: .net console-application

我已经有一段时间了,但似乎无法解决这个问题。我有一个需要调用WebSecurity.InitializeDatabaseConnection()的控制台应用程序。我已经解决了一些问题,但现在我收到了错误:

Could not load file or assembly 'System.Web.Providers, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' or one of its dependencies. The system cannot find the file specified.

我已经从PackageManager运行了Install-Package Microsoft.AspNet.Providers和Install-Package Microsoft.AspNet.Providers.Core。

我已经验证了System.Web.Providers的程序集引用版本是2.0.0.0并且CopyToLocal设置为true。

我已经验证了程序集存在于bin目录中。

这是我的App.config。

<?xml version="1.0" encoding="utf-8"?>

<configuration>
  <configSections>
    <section name="entityFramework"
             type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"
             requirePermission="false" />
    <!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 -->
  </configSections>
  <startup>
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
  </startup>
  <system.web>
    <compilation debug="true" targetFramework="4.5" />
    <httpRuntime targetFramework="4.5" />
    <authentication mode="None" />
    <profile defaultProvider="DefaultProfileProvider">
      <providers>
        <add name="DefaultProfileProvider"
             type="System.Web.Providers.DefaultProfileProvider, System.Web.Providers, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"
             connectionStringName="DefaultConnection" applicationName="/" />
      </providers>
    </profile>
    <membership defaultProvider="DefaultMembershipProvider">
      <providers>
        <add name="DefaultMembershipProvider"
             type="System.Web.Providers.DefaultMembershipProvider, System.Web.Providers, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"
             connectionStringName="DefaultConnection" enablePasswordRetrieval="false" enablePasswordReset="true"
             requiresQuestionAndAnswer="false" requiresUniqueEmail="false" maxInvalidPasswordAttempts="5"
             minRequiredPasswordLength="6" minRequiredNonalphanumericCharacters="0" passwordAttemptWindow="10"
             applicationName="/" />
      </providers>
    </membership>
    <roleManager defaultProvider="DefaultRoleProvider" enabled="true">
      <providers>
        <add name="DefaultRoleProvider"
             type="System.Web.Providers.DefaultRoleProvider, System.Web.Providers, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"
             connectionStringName="DefaultConnection" applicationName="/" />
      </providers>
    </roleManager>
  </system.web>
  <connectionStrings>
    <add name="DefaultConnection"
         connectionString="Data Source=.;Initial Catalog=MyDatabase;Integrated Security=SSPI;"
         providerName="System.Data.SqlClient" />
  </connectionStrings>
</configuration>

任何建议都表示赞赏。

1 个答案:

答案 0 :(得分:0)

我遇到了这个确切的问题,整个上午破坏了我的脑袋得到了解决。我知道问题是什么,但我找不到System.Web.Providers 2.0.0.0我只能找到版本1.

我在网上找到的很多资源都建议我通过NuGet包管理器控制台尝试以下命令。

Install-Package Microsoft.AspNet.Providers
Install-Package Microsoft.AspNet.Providers.Core

然而,这些仍然安装版本1.0.0.0,我喜欢自己需要2.0.0

我解决问题的方法是转到

工具&gt; NuGet包管理器&gt;管理NuGet包以获得解决方案

当对话框出现时,我进入了更新部分并查找了Microsoft ASP.NET Universal Providers核心库并点击了更新。

enter image description here

当我通过控制台运行命令时,它总是安装版本1,当我这样添加版本2.

希望这会有所帮助,如果你已经解决了它,希望它可以帮助像我一样的其他人在早上寻找解决方案。