MVC4 ASP.net - Microsoft.AspNet.WebPages.OAuth给出运行时错误

时间:2015-01-07 10:53:44

标签: c# asp.net-mvc-4 oauth web-config nuget-package

我是ASP.NET和Visual Studio的新手,但当我使用 Nuget Package Manager 安装 Microsoft.AspNet.WebPages.OAuth 包时该项目现在得到一个运行时错误。我正在从早期的stackoverflow问题中回答这个问题:How to add ASP.NET Membership Provider in a Empty MVC 4 Project Template?

任何人都知道为什么会这样吗?

我想给你一些代码,但不太确定要为你提供什么代码。安装软件包后,至少在配置文件中添加了以下几行,是否会破坏项目?

<configSections>
    <section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=5.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />  
       <sectionGroup name="dotNetOpenAuth" type="DotNetOpenAuth.Configuration.DotNetOpenAuthSection, DotNetOpenAuth.Core">
          <section name="messaging" type="DotNetOpenAuth.Configuration.MessagingElement, DotNetOpenAuth.Core" requirePermission="false" allowLocation="true" />
          <section name="reporting" type="DotNetOpenAuth.Configuration.ReportingElement, DotNetOpenAuth.Core" requirePermission="false" allowLocation="true" />
          <section name="openid" type="DotNetOpenAuth.Configuration.OpenIdElement, DotNetOpenAuth.OpenId" requirePermission="false" allowLocation="true" />
          <section name="oauth" type="DotNetOpenAuth.Configuration.OAuthElement, DotNetOpenAuth.OAuth" requirePermission="false" allowLocation="true" />
      </sectionGroup>
</configSections>

提前,谢谢你的帮助。

更新

错误消息:无法加载文件或程序集&System; Web.WebPages.Razor,Version = 3.0.0.0,Culture = neutral,PublicKeyToken = 31bf3856ad364e35&#39;或其中一个依赖项。定位的程序集的清单定义与程序集引用不匹配。 (HRESULT异常:0x80131040)

1 个答案:

答案 0 :(得分:0)

这里至少有两个不同的问题。 第一个是包含自动生成的

   <sectionGroup name="dotNetOpenAuth" type="DotNetOpenAuth.Configuration.DotNetOpenAuthSection, DotNetOpenAuth.Core">
      <section name="messaging" type="DotNetOpenAuth.Configuration.MessagingElement, DotNetOpenAuth.Core" requirePermission="false" allowLocation="true" />
      <section name="reporting" type="DotNetOpenAuth.Configuration.ReportingElement, DotNetOpenAuth.Core" requirePermission="false" allowLocation="true" />
      <section name="openid" type="DotNetOpenAuth.Configuration.OpenIdElement, DotNetOpenAuth.OpenId" requirePermission="false" allowLocation="true" />
      <section name="oauth" type="DotNetOpenAuth.Configuration.OAuthElement, DotNetOpenAuth.OAuth" requirePermission="false" allowLocation="true" />
  </sectionGroup> 

显然在早期版本的MVC中,这段代码是必要的。但是,它目前是多余的,更糟糕​​的是,与&#34; machine.config&#34;中包含的相同块冲突。在4.5 .NET框架中找到,通过仔细删除这些块,在VS2013之外的编辑器中,至少我使用的是什么,这个问题将得到解决。 我说一个外部编辑器,因为VS 2103中的一些catch 22阻止了解决方案中config.web部分对该块的编辑和保存。我用Notepad ++ 第二个问题可能与在整个解决方案中找到System.Web.WebPages.Razor的引用有关,如果版本号不在3.0.0.0,即2.0.0.0,则更新它并确保nuget已加载3.0。 0.0 整个dotNetOpenAuth软件包在早期版本的MVC解决方案中存在自身问题。 我试图使用ASP.NET Web API安全性书中的示例。它包含出色的代码,但在尝试运行包含dotNetOpenAuth代码的解决方案时遇到了巨大的问题。问题都与MVC级别和dotNetOpenAuth有关,而不是示例本身。