3

我收到以下错误:

无法加载文件或程序集“System.Web”或其依赖项之一。该系统找不到指定的文件。

我正在尝试在 Web.Config 中进行 LDAP 成员资格配置,并在前面提出了这个问题,但我认为这可能是一个更普遍的问题。我在 VS2010/.NET 4.0 中使用 Visual Studio 开发服务器

编辑:Web.Config 如下所示

<?xml version="1.0" encoding="utf-8"?>
<!--
  For more information on how to configure your ASP.NET application, please visit
  http://go.microsoft.com/fwlink/?LinkId=169433
  -->
<configuration>
  <configSections>
    <!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 -->
    <section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=4.4.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
    <sectionGroup name="applicationSettings" type="System.Configuration.ApplicationSettingsGroup, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" >
      <section name="FPLMobileWebApp.Properties.Settings" type="System.Configuration.ClientSettingsSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
    </sectionGroup>
  </configSections>
  <connectionStrings>
    <add name="LDAPConnectionString" connectionString="LDAP://ad.company.com/CN=Users,DC=company,DC=com" />
  </connectionStrings>
  <appSettings>
    <add key="aspnet:UseTaskFriendlySynchronizationContext" value="true" />
    <add key="webpages:Version" value="2.0.0.0" />
    <add key="webpages:Enabled" value="false" />
    <add key="PreserveLoginUrl" value="true" />
    <add key="ClientValidationEnabled" value="true" />
    <add key="UnobtrusiveJavaScriptEnabled" value="true" />
  </appSettings>
  <system.web>
    <compilation debug="true" targetFramework="4.0" />
    <authentication mode="Forms">
      <forms name=".ADAuthCookie" loginUrl="~/Account/Login" timeout="2880" defaultUrl="~/FPL/Search" />
    </authentication>
    <pages>
      <namespaces>
        <add namespace="System.Web.Helpers" />
        <add namespace="System.Web.Mvc" />
        <add namespace="System.Web.Mvc.Ajax" />
        <add namespace="System.Web.Mvc.Html" />
        <add namespace="System.Web.Optimization" />
        <add namespace="System.Web.Routing" />
        <add namespace="System.Web.WebPages" />
      </namespaces>
    </pages>
    <profile defaultProvider="DefaultProfileProvider">
      <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>
    <membership defaultProvider="DomainLoginMembershipProvider">
      <providers>
        <clear/>
        <add name="DomainLoginMembershipProvider" type="System.Web.Security.ActiveDirectoryMembershipProvider, System.Web" connectionStringName="LDAPConnectionString" attributeMapUsername="sAMAccountName" applicationName="/" />
      </providers>
    </membership>
    <roleManager defaultProvider="DefaultRoleProvider">
      <providers>
        <add name="DefaultRoleProvider" type="System.Web.Providers.DefaultRoleProvider, System.Web.Providers, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" connectionStringName="DefaultConnection" applicationName="/" />
      </providers>
    </roleManager>
    <sessionState mode="InProc" customProvider="DefaultSessionProvider">
      <providers>
        <add name="DefaultSessionProvider" type="System.Web.Providers.DefaultSessionStateProvider, System.Web.Providers, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" />
      </providers>
    </sessionState>
  </system.web>
  <system.webServer>
    <validation validateIntegratedModeConfiguration="false" />
    <modules runAllManagedModulesForAllRequests="true" />
  </system.webServer>
  <runtime>
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
      <dependentAssembly>
        <assemblyIdentity name="System.Web.Helpers" publicKeyToken="31bf3856ad364e35" />
        <bindingRedirect oldVersion="1.0.0.0-2.0.0.0" newVersion="2.0.0.0" />
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35" />
        <bindingRedirect oldVersion="1.0.0.0-4.0.0.0" newVersion="4.0.0.0" />
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="System.Web.WebPages" publicKeyToken="31bf3856ad364e35" />
        <bindingRedirect oldVersion="1.0.0.0-2.0.0.0" newVersion="2.0.0.0" />
      </dependentAssembly>
    </assemblyBinding>
  </runtime>
  <entityFramework>
    <defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework" />
  </entityFramework>
  <applicationSettings>
    <FPLMobileWebApp.Properties.Settings>
      <setting name="FPLMobileWebApp_FPLdb_Parts" serializeAs="String">
        <value>http://a09devlab/pld/parts.asmx</value>
      </setting>
    </FPLMobileWebApp.Properties.Settings>
  </applicationSettings>
</configuration>

编辑:我只是将 System.Web dll 添加到我的应用程序的 bin 文件夹中。但是,我想确保它正确部署,现在它说我的连接字符串不存在。

4

1 回答 1

0

我认为这是一个权限问题。
看看MSDN

ActiveDirectoryMembershipProvider实例仅适用于 ASP.NET 的 完全信任策略默认配置。为了在任何部分信任级别使用 ActiveDirectoryMembershipProvider 实例,您必须对应用程序的适当信任策略文件进行更改,或者您必须创建部署在 GAC 中的“沙盒”程序集。ActiveDirectoryMembershipProvider类需要不受限制
DirectoryServicesPermission 权限跑步。此权限不会添加到随 ASP.NET 提供的任何部分信任策略文件中。尽管将 DirectoryServicesPermission 权限添加到部分信任策略文件将启用 ActiveDirectoryMembershipProvider 类,但这样做会使 System.DirectoryServices 命名空间类可用于在 ASP.NET 页面中运行的任何代码。对于需要在安全、锁定模式下运行的任何 Web 服务器,不建议使用此选项。
作为替代方案,您可以创建一个调用 ActiveDirectoryMembershipProvider 类的“沙盒”程序集. 此程序集可以包含将方法调用转发到 ActiveDirectoryMembershipProvider 类的包装类或派生自 ActiveDirectoryMembershipProvider 类的类。在任何一种情况下,包装类都必须声明不受限制的 DirectoryServicesPermission 权限。在 GAC 中部署沙盒程序集并使用 AllowPartiallyTrustedCallersAttribute (APTCA) 属性标记该程序集。这将使您部分受信任的 ASP.NET 代码能够调用您的包装器类,并且由于包装器类在内部断言不受限制的 DirectoryServicesPermission 权限,因此您的包装器类将能够成功调用提供程序

因此,解决问题的最简单方法(如果您确实面临安全问题)是为您的应用程序设置完全信任策略
怎么做?看技术网

于 2012-07-16T13:52:35.280 回答