【问题标题】:Attempt by security transparent method 'Microsoft.Web.Helpers.PreApplicationStartCode.Start()' to access security critical method尝试通过安全透明方法“Microsoft.Web.Helpers.PreApplicationStartCode.Start()”访问安全关键方法
【发布时间】:2014-02-16 22:05:29
【问题描述】:

我的解决方案中有两个 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 在站点 #2:

<?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.
    }
}

web.config 在站点 #1:

<?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 在站点 #2:

<?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 调用(来自客户端)。另外,请解释一下:您是否在两种情况下都跨域提出请求,仅在 1 中,两者都没有?请澄清。
  • 恐怕这与答案无关,但我编辑了我的问题以澄清。两个站点都发送命令,一个到另一个,因为一个是“联盟”的主站点,另一个由这个主站点控制。
  • 可能不相关。每次我看到跨域请求时,我都会担心同源策略限制。所以,我想确认您启用了 CORS
  • 啊,好的。感谢您的关注;)
  • 抱歉,我的意思是作为一个问题:您是否在 Web-API 提供程序上启用了 CORS?

标签: c# asp.net asp.net-mvc nuget-package


【解决方案1】:

注意: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 所示。当我尝试同时访问这两个站点时,问题就开始了。调试中的一个正常工作,而另一个有错误。
  • @CiganoMorrisonMendez - 但错误显示 Microsoft.Web.Helpers,你应该已经删除的包......嗯......这不是给你敲响了警钟吗?
  • @ErikFunkenbusch 似乎是一个错误或类似的东西。
【解决方案2】:

我收到了同样的错误信息,它与一个已更改但未在各处正确更新的包有关(不知道为什么,不知道如何,您可以想象这个错误带来的快乐)..我扔掉了我的包文件夹并重建了项目等等……仅仅几个小时后,我又开始编码了

【讨论】:

    【解决方案3】:

    首先,如果可能,我会建议使用 Visual Studio 2013 for 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 中确保这些更改存在:

    &lt;runtime&gt;/&lt;assemblyBinding&gt; 部分,确保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 中找到 &lt;appSettings&gt; 部分,并将 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。删除 Full 以外的任何信任级别,例如:

    <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 条目有关。
    【解决方案4】:

    这是完整的官方迁移指南:

    How to Upgrade an ASP.NET MVC 4 and Web API Project to ASP.NET MVC 5 and Web API 2

    主要变化包括:

    • Medium Trust 不再可用(现在应该使用 Full Trust);

    • 现在应该使用与 MVC 5 和 Web API 2 兼容的包。

    【讨论】:

      猜你喜欢
      • 2014-11-06
      • 2013-12-13
      • 2013-10-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-03-15
      • 2014-06-09
      • 2015-06-20
      相关资源
      最近更新 更多