尝试使用安全透明的方法“Microsoft.Web.Helpers.PreApplicationStartCode.Start()”访问安全关键方法

7
我在解决方案中有两个MVC网站,转换为MVC5。 为了进行特定的测试,我需要这两个站点都运行,因为其中一个通过Web API与另一个通信。 他们使用IIS Express运行。
当我在Visual Studio(2012)中启动其中一个并访问已启动的站点时,一切正常。 当我尝试访问另一个站点时,出现以下消息:
“尝试使用安全透明方法'Microsoft.Web.Helpers.PreApplicationStartCode.Start()'访问安全关键方法'System.Web.WebPages.Razor.WebPageRazorHost.AddGlobalImport(System.String)'失败。”
如其他答案所建议的那样,我更新了所有软件包,并从其中一个卸载了`DotNetOpenAuth`软件包,但没有结果。
这是站点#1的`package.config`:
<?xml version="1.0" encoding="utf-8"?>
<packages>
  <package id="AntiXSS" version="4.2.1" targetFramework="net45" />
  <package id="Antlr" version="3.4.1.9004" targetFramework="net45" />
  <package id="BeginCollectionItem" version="1.2.1.0" targetFramework="net45" />
  <package id="Code52.i18n.MVC4" version="0.2.8" targetFramework="net45" />
  <package id="CSS-Filters-Polyfill" version="1.0.0" targetFramework="net45" />
  <package id="DotNet.Highcharts" version="2.0" targetFramework="net45" />
  <package id="DotNetOpenAuth.AspNet" version="4.3.4.13329" targetFramework="net45" />
  <package id="DotNetOpenAuth.Core" version="4.3.4.13329" targetFramework="net45" />
  <package id="DotNetOpenAuth.OAuth.Consumer" version="4.3.4.13329" targetFramework="net45" />
  <package id="DotNetOpenAuth.OAuth.Core" version="4.3.4.13329" targetFramework="net45" />
  <package id="DotNetOpenAuth.OpenId.Core" version="4.3.4.13329" targetFramework="net45" />
  <package id="DotNetOpenAuth.OpenId.RelyingParty" version="4.3.4.13329" targetFramework="net45" />
  <package id="EntityFramework" version="6.0.1" targetFramework="net45" />
  <package id="Facebook" version="6.4.2" targetFramework="net45" />
  <package id="Faker" version="1.2" targetFramework="net45" />
  <package id="Faker.Net" version="1.0.3" targetFramework="net45" />
  <package id="Galleria.js" version="1.2.9" targetFramework="net45" />
  <package id="HtmlAgilityPack" version="1.4.6" targetFramework="net45" />
  <package id="ImageResizer" version="3.3.3" targetFramework="net45" />
  <package id="iTextSharp" version="4.1.2" targetFramework="net45" />
  <package id="jQuery" version="1.10.2" targetFramework="net45" />
  <package id="jQuery.Cookie" version="1.3.1" targetFramework="net45" />
  <package id="jQuery.MaskedInput" version="1.3.1.1" targetFramework="net45" />
  <package id="jQuery.UI.Combined" version="1.10.3" targetFramework="net45" />
  <package id="jQuery.Validation" version="1.8.1" targetFramework="net45" />
  <package id="jquery-globalize" version="0.1.3" targetFramework="net45" />
  <package id="knockoutjs" version="2.2.1" targetFramework="net45" />
  <package id="Microsoft.AspNet.Mvc" version="5.1.1" targetFramework="net45" />
  <package id="Microsoft.AspNet.Providers" version="1.1" targetFramework="net45" />
  <package id="Microsoft.AspNet.Providers.Core" version="1.0" targetFramework="net45" />
  <package id="Microsoft.AspNet.Razor" version="3.1.1" targetFramework="net45" />
  <package id="Microsoft.AspNet.Web.Optimization" version="1.1.0" targetFramework="net45" />
  <package id="Microsoft.AspNet.WebApi" version="5.1.1" targetFramework="net45" />
  <package id="Microsoft.AspNet.WebApi.Client" version="5.1.1" targetFramework="net45" />
  <package id="Microsoft.AspNet.WebApi.Core" version="5.1.1" targetFramework="net45" />
  <package id="Microsoft.AspNet.WebApi.WebHost" version="5.1.1" targetFramework="net45" />
  <package id="Microsoft.AspNet.WebHelpers" version="3.1.1" targetFramework="net45" />
  <package id="Microsoft.AspNet.WebPages" version="3.1.1" targetFramework="net45" />
  <package id="Microsoft.AspNet.WebPages.Data" version="3.1.1" targetFramework="net45" />
  <package id="Microsoft.AspNet.WebPages.OAuth" version="3.1.1" targetFramework="net45" />
  <package id="Microsoft.AspNet.WebPages.WebData" version="3.1.1" targetFramework="net45" />
  <package id="Microsoft.Bcl" version="1.1.6" targetFramework="net45" />
  <package id="Microsoft.Bcl.Build" version="1.0.13" targetFramework="net45" />
  <package id="Microsoft.jQuery.Unobtrusive.Ajax" version="2.0.30506.0" targetFramework="net45" />
  <package id="Microsoft.jQuery.Unobtrusive.Validation" version="2.0.30506.0" targetFramework="net45" />
  <package id="Microsoft.Net.Http" version="2.2.18" targetFramework="net45" />
  <package id="Microsoft.Web.Infrastructure" version="1.0.0.0" targetFramework="net45" />
  <package id="ModelMetadataExtensionsWithBugfix" version="0.1.2" targetFramework="net45" />
  <package id="Modernizr" version="2.6.2" targetFramework="net45" />
  <package id="Moq" version="4.0.10827" targetFramework="net45" />
  <package id="morelinq" version="1.0.16006" targetFramework="net45" />
  <package id="MvcMailer" version="4.5" targetFramework="net45" />
  <package id="MvcScaffolding" version="1.0.9" targetFramework="net45" />
  <package id="Newtonsoft.Json" version="5.0.8" targetFramework="net45" />
  <package id="PagedList" version="1.16.0.0" targetFramework="net45" />
  <package id="PagedList.Mvc" version="4.3.0.0" targetFramework="net45" />
  <package id="RazorGenerator.Mvc" version="2.1.1" targetFramework="net45" />
  <package id="RazorGenerator.Testing" version="2.1.1" targetFramework="net45" />
  <package id="RazorPDF" version="1.0.0" targetFramework="net45" />
  <package id="ReflectionMagic" version="2.0.0" targetFramework="net45" />
  <package id="RestSharp" version="104.1" targetFramework="net45" />
  <package id="SendGrid" version="1.1.1" targetFramework="net45" />
  <package id="System.Management.Automation" version="6.1.7601.17515" targetFramework="net45" />
  <package id="System.Web.Providers" version="1.2" targetFramework="net45" />
  <package id="T4Scaffolding" version="1.0.8" targetFramework="net45" />
  <package id="T4Scaffolding.Core" version="1.0.0" targetFramework="net45" />
  <package id="WebActivator" version="1.5.3" targetFramework="net45" />
  <package id="WebActivatorEx" version="2.0.4" targetFramework="net45" />
  <package id="WebGrease" version="1.6.0" targetFramework="net45" />
</packages>

在第二个站点中,packages.config 的内容如下:
<?xml version="1.0" encoding="utf-8"?>
<packages>
  <package id="Antlr" version="3.4.1.9004" targetFramework="net45" />
  <package id="BeginCollectionItem" version="1.2.1.0" targetFramework="net45" />
  <package id="CSS-Filters-Polyfill" version="1.0.0" targetFramework="net45" />
  <package id="EntityFramework" version="6.0.1" targetFramework="net45" />
  <package id="Facebook" version="6.1.4" targetFramework="net45" />
  <package id="ImageResizer" version="3.4.2" targetFramework="net45" />
  <package id="jQuery" version="1.9.1" targetFramework="net45" />
  <package id="jQuery.MaskedInput" version="1.3.1.1" targetFramework="net45" />
  <package id="jQuery.UI.Combined" version="1.10.3" targetFramework="net45" />
  <package id="jQuery.Validation" version="1.9.0.1" targetFramework="net45" />
  <package id="jQuery-Timepicker-Addon" version="1.0.0" targetFramework="net45" />
  <package id="knockoutjs" version="2.1.0" targetFramework="net45" />
  <package id="Microsoft.AspNet.Mvc" version="5.1.1" targetFramework="net45" />
  <package id="Microsoft.AspNet.Mvc.Facebook" version="5.0.0" targetFramework="net45" />
  <package id="Microsoft.AspNet.Razor" version="3.1.1" targetFramework="net45" />
  <package id="Microsoft.AspNet.Web.Optimization" version="1.1.2" targetFramework="net45" />
  <package id="Microsoft.AspNet.WebApi" version="5.1.1" targetFramework="net45" />
  <package id="Microsoft.AspNet.WebApi.Client" version="5.1.1" targetFramework="net45" />
  <package id="Microsoft.AspNet.WebApi.Core" version="5.1.1" targetFramework="net45" />
  <package id="Microsoft.AspNet.WebApi.HelpPage" version="5.0.0" targetFramework="net45" />
  <package id="Microsoft.AspNet.WebApi.OData" version="5.0.0" targetFramework="net45" />
  <package id="Microsoft.AspNet.WebApi.SelfHost" version="5.0.0" targetFramework="net45" />
  <package id="Microsoft.AspNet.WebApi.Tracing" version="5.0.0" targetFramework="net45" />
  <package id="Microsoft.AspNet.WebApi.WebHost" version="5.1.1" targetFramework="net45" />
  <package id="Microsoft.AspNet.WebHelpers" version="3.1.1" targetFramework="net45" />
  <package id="Microsoft.AspNet.WebPages" version="3.1.1" targetFramework="net45" />
  <package id="Microsoft.AspNet.WebPages.Data" version="3.1.1" targetFramework="net45" />
  <package id="Microsoft.AspNet.WebPages.WebData" version="3.1.1" targetFramework="net45" />
  <package id="Microsoft.Bcl" version="1.1.6" targetFramework="net45" />
  <package id="Microsoft.Bcl.Build" version="1.0.13" targetFramework="net45" />
  <package id="Microsoft.Data.Edm" version="5.6.0" targetFramework="net45" />
  <package id="Microsoft.Data.OData" version="5.6.0" targetFramework="net45" />
  <package id="Microsoft.jQuery.Unobtrusive.Ajax" version="2.0.20710.0" targetFramework="net45" />
  <package id="Microsoft.jQuery.Unobtrusive.Validation" version="2.0.20710.0" targetFramework="net45" />
  <package id="Microsoft.Net.Http" version="2.2.18" targetFramework="net45" />
  <package id="Microsoft.Web.Infrastructure" version="1.0.0.0" targetFramework="net45" />
  <package id="Modernizr" version="2.5.3" targetFramework="net45" />
  <package id="MvcFlash.Core" version="2.0.1" targetFramework="net45" />
  <package id="MvcScaffolding" version="1.0.9" targetFramework="net45" />
  <package id="Newtonsoft.Json" version="5.0.8" targetFramework="net45" />
  <package id="System.Spatial" version="5.6.0" targetFramework="net45" />
  <package id="T4Scaffolding" version="1.0.8" targetFramework="net45" />
  <package id="T4Scaffolding.Core" version="1.0.0" targetFramework="net45" />
  <package id="Twitter.Bootstrap" version="3.0.0" targetFramework="net45" />
  <package id="Twitter.Bootstrap.MVC" version="2.0.0" targetFramework="net45" />
  <package id="WebActivatorEx" version="2.0.4" targetFramework="net45" />
  <package id="WebGrease" version="1.6.0" targetFramework="net45" />
  <package id="XmlExport" version="0.3.2" targetFramework="net45" />
  <package id="XmlOutput" version="1.0.0" targetFramework="net45" />
</packages>

还有什么我可以尝试的吗?

编辑

Web API调用(一个站点调用另一个站点):

if (SettingsHelper.GetCurrentSettings().IntegratedToFederated)
{
    // Report Federated
    var pointsGranted = new APIPointsGrantedModel();
    pointsGranted.CustomerId = customerPointsPerShop.Customer.ControlKey;
    pointsGranted.ShopId = (Guid)customerPointsPerShop.Shop.ControlKey;
    pointsGranted.Amount = customerPointsPerShop.Points;
    pointsGranted.Timestamp = DateTime.Now;

    HttpClient aClient = new HttpClient();
    var website = context.Settings.FirstOrDefault().FederatedWebsite;
    Uri theUri = new Uri(website + "/api/APIShops/PointsGranted");
    HttpResponseMessage aResponse = await aClient.PostAsync(theUri, StringContentHelper.BuildStringContent(pointsGranted, pointsGranted.GetType()));

    if (aResponse.IsSuccessStatusCode)
    {
        var responseContent = await aResponse.Content.ReadAsAsync<APIPointsGrantedModel>();
        // Read the response and perform some business logic
    }
    else
    {
        String failureMsg = "HTTP Status: " + aResponse.StatusCode.ToString() + " - Reason: " + aResponse.ReasonPhrase;
        this.FlashError(failureMsg);
        // TODO: Register in log.
    }
}

网站 #1 的 web.config 文件:

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

<configuration>
  ...
  <runtime>
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
      <dependentAssembly>
        <assemblyIdentity name="WebGrease" publicKeyToken="31bf3856ad364e35" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-1.6.5135.21930" newVersion="1.6.5135.21930" />
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="DotNetOpenAuth.AspNet" publicKeyToken="2780ccd10d57b246" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-4.3.4.13329" newVersion="4.3.0.0" />
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="DotNetOpenAuth.Core" publicKeyToken="2780ccd10d57b246" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-4.3.4.13329" newVersion="4.3.0.0" />
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="EntityFramework" publicKeyToken="b77a5c561934e089" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-6.0.0.0" newVersion="6.0.0.0" />
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="System.Web.Http" publicKeyToken="31bf3856ad364e35" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-5.1.0.0" newVersion="5.1.0.0" />
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="System.Net.Http.Formatting" publicKeyToken="31bf3856ad364e35" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-5.1.0.0" newVersion="5.1.0.0" />
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="System.Web.WebPages.Razor" publicKeyToken="31bf3856ad364e35" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-3.0.0.0" newVersion="3.0.0.0" />
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="WebMatrix.WebData" publicKeyToken="31bf3856ad364e35" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-3.0.0.0" newVersion="3.0.0.0" />
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="WebMatrix.Data" publicKeyToken="31bf3856ad364e35" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-3.0.0.0" newVersion="3.0.0.0" />
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="System.Web.Helpers" publicKeyToken="31bf3856ad364e35" />
        <bindingRedirect oldVersion="1.0.0.0-3.0.0.0" newVersion="3.0.0.0" />
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="System.Web.WebPages" publicKeyToken="31bf3856ad364e35" />
        <bindingRedirect oldVersion="0.0.0.0-3.0.0.0" newVersion="3.0.0.0" />
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35" />
        <bindingRedirect oldVersion="0.0.0.0-5.1.0.0" newVersion="5.1.0.0" />
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-6.0.0.0" newVersion="6.0.0.0" />
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="Moq" publicKeyToken="69f491c39445e920" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-4.2.1402.2112" newVersion="4.2.1402.2112" />
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="Microsoft.Data.Edm" publicKeyToken="31bf3856ad364e35" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-5.6.1.0" newVersion="5.6.1.0" />
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="Microsoft.Data.OData" publicKeyToken="31bf3856ad364e35" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-5.6.1.0" newVersion="5.6.1.0" />
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="System.Spatial" publicKeyToken="31bf3856ad364e35" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-5.6.1.0" newVersion="5.6.1.0" />
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="itextsharp" publicKeyToken="8354ae6d2174ddca" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-5.5.0.0" newVersion="4.1.2.0" />
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="Antlr3.Runtime" publicKeyToken="eb42632606e9261f" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-3.5.0.2" newVersion="3.5.0.2" />
      </dependentAssembly>
    </assemblyBinding>
    ...
</configuration>

第二个站点的web.config文件:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  ...
  <runtime>
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
      <dependentAssembly>
        <assemblyIdentity name="WebGrease" publicKeyToken="31bf3856ad364e35" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-1.6.5135.21930" newVersion="1.6.5135.21930" />
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="System.Web.WebPages.Razor" publicKeyToken="31bf3856ad364e35" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-3.0.0.0" newVersion="3.0.0.0" />
      </dependentAssembly>
      <!-- dependentAssembly>
        <assemblyIdentity name="DotNetOpenAuth.AspNet" publicKeyToken="2780ccd10d57b246" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-4.3.0.0" newVersion="4.3.0.0" />
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="DotNetOpenAuth.Core" publicKeyToken="2780ccd10d57b246" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-4.0.0.0" newVersion="4.0.0.0" />
      </dependentAssembly -->
      <dependentAssembly>
        <assemblyIdentity name="System.Web.Razor" publicKeyToken="31bf3856ad364e35" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-3.0.0.0" newVersion="3.0.0.0" />
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="WebMatrix.WebData" publicKeyToken="31bf3856ad364e35" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-3.0.0.0" newVersion="3.0.0.0" />
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="WebMatrix.Data" publicKeyToken="31bf3856ad364e35" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-3.0.0.0" newVersion="3.0.0.0" />
      </dependentAssembly>
      <!-- dependentAssembly>
        <assemblyIdentity name="DotNetOpenAuth.OpenId" publicKeyToken="2780ccd10d57b246" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-4.3.0.0" newVersion="4.3.0.0" />
      </dependentAssembly -->
      <dependentAssembly>
        <assemblyIdentity name="System.Web.Helpers" publicKeyToken="31bf3856ad364e35" />
        <bindingRedirect oldVersion="0.0.0.0-3.0.0.0" newVersion="3.0.0.0" />
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="System.Web.WebPages" publicKeyToken="31bf3856ad364e35" />
        <bindingRedirect oldVersion="0.0.0.0-3.0.0.0" newVersion="3.0.0.0" />
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="System.Web.Http" publicKeyToken="31bf3856ad364e35" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-5.1.0.0" newVersion="5.1.0.0" />
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="System.Net.Http.Formatting" publicKeyToken="31bf3856ad364e35" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-5.1.0.0" newVersion="5.1.0.0" />
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35" />
        <bindingRedirect oldVersion="0.0.0.0-5.1.0.0" newVersion="5.1.0.0" />
      </dependentAssembly>
      <!-- dependentAssembly>
        <assemblyIdentity name="DotNetOpenAuth.OAuth.Consumer" publicKeyToken="2780ccd10d57b246" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-4.3.0.0" newVersion="4.3.0.0" />
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="DotNetOpenAuth.OAuth" publicKeyToken="2780ccd10d57b246" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-4.3.0.0" newVersion="4.3.0.0" />
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="DotNetOpenAuth.OpenId.RelyingParty" publicKeyToken="2780ccd10d57b246" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-4.3.0.0" newVersion="4.3.0.0" />
      </dependentAssembly -->
      <dependentAssembly>
        <assemblyIdentity name="DotNetOpenAuth.OpenId" publicKeyToken="2780ccd10d57b246" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-4.0.0.0" newVersion="4.0.0.0" />
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="DotNetOpenAuth.Core" publicKeyToken="2780ccd10d57b246" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-4.3.0.0" newVersion="4.3.0.0" />
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="DotNetOpenAuth.OpenId.RelyingParty" publicKeyToken="2780ccd10d57b246" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-4.3.0.0" newVersion="4.3.0.0" />
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="DotNetOpenAuth.AspNet" publicKeyToken="2780ccd10d57b246" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-4.3.0.0" newVersion="4.3.0.0" />
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="DotNetOpenAuth.OAuth.Consumer" publicKeyToken="2780ccd10d57b246" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-4.0.0.0" newVersion="4.0.0.0" />
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="DotNetOpenAuth.OAuth" publicKeyToken="2780ccd10d57b246" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-4.0.0.0" newVersion="4.0.0.0" />
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-6.0.0.0" newVersion="6.0.0.0" />
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="Moq" publicKeyToken="69f491c39445e920" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-4.2.1402.2112" newVersion="4.2.1402.2112" />
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="Microsoft.Data.Edm" publicKeyToken="31bf3856ad364e35" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-5.6.1.0" newVersion="5.6.1.0" />
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="Microsoft.Data.OData" publicKeyToken="31bf3856ad364e35" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-5.6.1.0" newVersion="5.6.1.0" />
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="System.Spatial" publicKeyToken="31bf3856ad364e35" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-5.6.1.0" newVersion="5.6.1.0" />
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="Antlr3.Runtime" publicKeyToken="eb42632606e9261f" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-3.5.0.2" newVersion="3.5.0.2" />
      </dependentAssembly>
    </assemblyBinding>
  ...
 </system.net>
</configuration>

请在您的帖子中包含Web API调用(来自客户端)。另外,请解释:在这两种情况下,您是否跨域进行请求,还是只有其中一种或者都不是?请澄清。 - Dave Alperovich
可能与此无关。每次我看到跨域请求时,都会担心同源策略的限制。因此,我想确认您是否启用了CORS。 - Dave Alperovich
啊,好的。谢谢关心 ;) - Leonel Sanches da Silva
我仍在开发代码。现在没有必要启用它。 - Leonel Sanches da Silva
谢谢 - 一切看起来都很好,我在遇到问题的项目上弹了我的packages.config和web.config,快速浏览后发现一切都匹配。我希望我能记得问题具体是什么,但这已经过去一个月了 :/ 请再次检查您的web.config中的编译和httpRuntime元素(targetFramework = 4.5)。 - Tommy
显示剩余6条评论
4个回答

2
注意:Microsoft-Web-Helpers已被Microsoft.AspNet.WebHelpers替换。您应该先删除旧包,然后安装新的包。
我打开了NuGet包管理器并安装了Microsoft.AspNet.WebHelpers包,事情开始正常工作。请注意,当您创建一个新的MVC 5应用程序并尝试合并SimpleSecurity或SimpleMembership时,您将遇到相同的问题,因为默认情况下未安装Microsoft.AspNet.WebHelpers。它必须存在才能使SimpleMembership正确运行。
我验证了升级后参考应用程序中的所有功能都可以正常工作。即使是使用Postal生成电子邮件也可以正常工作,这一点我不确定,因为Razor也进行了升级。
我需要对SimpleSecurity程序集进行的一个更改是删除AuthorizeAttribute和BasicAuthorizeAttribute过滤器,并将它们放在单独的程序集中。我这样做是因为它们依赖于MVC和Web API程序集。因此现在有一个MVC版本和另一个MVC 5版本。
请参考此链接: http://ctsoftr.com/upgrading-from-asp-net-mvc-4-to-5/

请注意,这些步骤是之前完成的,如我从两个网站中发布的“packages.config”所示。问题出现在我尝试同时访问这两个站点时。处于调试状态的那个正常工作,而另一个则出现错误。 - Leonel Sanches da Silva
@CiganoMorrisonMendez - 然而错误提示说 Microsoft.Web.Helpers,这个你据说已经删除的包... 嗯嗯... 这难道不会让你警觉吗? - Erik Funkenbusch
@ErikFunkenbusch 看起来像是一个 bug 或者类似的东西。 - Leonel Sanches da Silva

0
首先,我建议如果可能的话,使用Visual Studio 2013进行MVC 5开发。
看起来你已经尝试了很多方法,但我想重申一些事情(因为它可能会帮助其他遇到相同问题的人),这些事情必须被检查并且可能是问题的原因:
  1. 更新所有的nuget包。(根据packages.config,似乎您已经完成了)

  2. global.asax中更改:

    WebApiConfig.Register(GlobalConfiguration.Configuration);

    GlobalConfiguration.Configure(WebApiConfig.Register);

  3. 使用以下命令在包管理器中卸载任何已安装的ASP.NET NuGet包:

    Uninstall-Package -Id Microsoft.AspNet.WebPages.Administration
    
    Uninstall-Package -Id Microsoft-Web-Helpers
    
    Uninstall-Package -Id Microsoft.AspNet.Mvc.FixedDisplayModes
    

    (看起来您也已经完成了此步骤)。

  4. 在web.config中确保已进行这些更改:

<runtime>/<assemblyBinding> 部分,确保正确的 newVersion 已经存在:
<runtime>
  <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
    <!--Two elements removed for Clarity -->
    <dependentAssembly>
      <assemblyIdentity name="System.Web.Helpers" publicKeyToken="31bf3856ad364e35" />
      <bindingRedirect oldVersion="1.0.0.0-3.0.0.0" newVersion="3.0.0.0" />
    </dependentAssembly>
    <dependentAssembly>
      <assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35" />
      <bindingRedirect oldVersion="1.0.0.0-5.0.0.0" newVersion="5.0.0.0" />
    </dependentAssembly>
    <dependentAssembly>
      <assemblyIdentity name="System.Web.WebPages" publicKeyToken="31bf3856ad364e35" />
      <bindingRedirect oldVersion="1.0.0.0-3.0.0.0" newVersion="3.0.0.0" />
    </dependentAssembly>
    <!--WebGrease element removed for Clarity -->
  </assemblyBinding>

5。在web.config文件中找到<appSettings>部分,并按照下面的方式更新webpages:version,将其从2.0.0.0.0更新为3.0.0.0

 <appSettings>
    <add key="webpages:Version" value="3.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>

6。移除除了完全信任级别以外的所有信任级别:

<securityPolicy>
   <!--<trustLevel name="Medium"  policyFile="web_mediumtrust.config"/>-->
</securityPolicy>

7. 更新 Views 文件夹下的 web.config 文件

  • 将所有包含System.Web.Mvc的元素从版本“4.0.0.0”更新到版本“5.0.0.0”。

    `

    -->
        <pages
            validateRequest="false"
            pageParserFilterType="System.Web.Mvc.ViewTypeParserFilter, System.Web.Mvc, Version=5.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"
            pageBaseType="System.Web.Mvc.ViewPage, System.Web.Mvc, Version=5.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"
            userControlBaseType="System.Web.Mvc.ViewUserControl, System.Web.Mvc, Version=5.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35">
            <controls>
                <add assembly="System.Web.Mvc, Version=5.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" namespace="System.Web.Mvc" tagPrefix="mvc" />
            </controls>
        </pages>
    </system.web>`
    
  • 将所有包含System.Web.WebPages.Razor的元素从版本“2.0.0.0”更新到版本“3.0.0.0”。如果此部分包含System.Web.WebPages,则将这些元素从版本“2.0.0.0”更新到版本“3.0.0.0

    <configuration>
        <configSections>
            <sectionGroup name="system.web.webPages.razor" type="System.Web.WebPages.Razor.Configuration.RazorWebSectionGroup, System.Web.WebPages.Razor, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35">
                <section name="host" type="System.Web.WebPages.Razor.Configuration.HostSection, System.Web.WebPages.Razor, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" />
                <section name="pages" type="System.Web.WebPages.Razor.Configuration.RazorPagesSection, System.Web.WebPages.Razor, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" />
            </sectionGroup>
        </configSections>`
    
  • 如果您在之前的步骤中删除了Microsoft-Web-Helpers NuGet包,请使用以下命令在PMC中安装Microsoft.AspNet.WebHelpers

    Install-Package -Id  Microsoft.AspNet.WebHelpers
    
  • 如果您的应用程序使用User.IsInRole()方法,请将以下内容添加到Web.config文件中。

    <system.webServer>
        <modules>
            <remove name="RoleManager" />
        </modules>
    </system.webServer>`
    
  • 从项目文件中删除MVC 4项目类型GUID。

    • 在“解决方案资源管理器”中,右键单击项目名称,然后选择“卸载项目”。
    • 右键单击项目,选择编辑ProjectName.csproj
    • 找到ProjectTypeGuids元素,然后删除MVC 4项目GUID:{E3E379DF-F4C6-4180-9B81-6769533ABE47}
    • 保存并关闭打开的项目文件。
    • 右键单击项目,选择重新加载项目。

    希望这能

    来源:www.asp.net/mvc/tutorials



谢谢您的回答,但我已经按照您的步骤(将项目从MVC4迁移到MVC5)在两个项目中都进行了操作,显然问题不在依赖项或配置上。似乎与默认的 machine.config 条目有关。 - Leonel Sanches da Silva

0

我也遇到了同样的错误信息,这似乎与一个包有关,这个包被更改了但是没有在所有地方正确更新(不知道为什么,也不知道如何解决,你可以想象这个错误带来的痛苦)... 我删除了我的包文件夹并重新构建了项目,问题就解决了... 只用了几个小时,现在我又可以编码了。


-1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接