IApplicationBuilder存在于Microsoft.AspNet.Http.Abstractions和Microsoft.AspNet.Http中

时间:2015-06-11 02:10:26

标签: asp.net asp.net-core roslyn

我们通过在ASP.NET 5中进行身份验证而感到困惑。In this security sample,我们看到了这种类型的事情:

HttpContext

初始问题

但是,在我们的项目中,Authentication没有.dnx\packages\Microsoft.AspNet.Http属性,我们会收到以下错误:

  

Microsoft.Framework.Runtime.Roslyn.RoslynCompilationException:C:\ myApp \ Startup.cs(71,46):错误CS1061:

     

' HttpContext的'不包含'身份验证'的定义并且没有扩展方法'身份验证'接受类型' HttpContext'的第一个参数。可以找到(你错过了使用指令或程序集引用吗?)

所以,我们查看了源代码,发现它是here inside the HttpAbstractions assembly。所以,我们将程序集添加到我们的项目中。

后续问题

不幸的是,我们现在收到以下错误:

  

Microsoft.Framework.Runtime.Roslyn.RoslynCompilationException:C:\ myApp \ Startup.cs(43,41):错误CS0433:

     

类型' IApplicationBuilder'存在于Microsoft.AspNet.Http.Abstractions,Version = 1.0.0.0,Culture = neutral,PublicKeyToken = null'和' Microsoft.AspNet.Http,Version = 1.0.0.0,Culture = neutral,PublicKeyToken = null'

问题

足够公平。我们如何要求编译器使用一个程序集而不是另一个程序集用于此特定类型?我们已尝试删除dnu restore,但它仅在public string savemagic(int i) { CheckBox tickbox = this.Controls.Find("ccheatcbox" + i.ToString(), true).FirstOrDefault() as CheckBox; if (tickbox.Checked) { TextBox namebox = this.Controls.Find("ccheatname" + i.ToString(), true).FirstOrDefault() as TextBox; ComboBox byteselect = this.Controls.Find("ccheatbytebox" + i.ToString(), true).FirstOrDefault() as ComboBox; TextBox offsetbox = this.Controls.Find("ccheatofsetbox" + i.ToString(), true).FirstOrDefault() as TextBox; TextBox bytebox = this.Controls.Find("ccheatbytes" + i.ToString(), true).FirstOrDefault() as TextBox; string Cheats= string.Format("{0} - {1} - {2}\n",namebox.Text, offsetbox.Text, bytebox.Text); return Cheats; } return ""; } 之后返回。

2 个答案:

答案 0 :(得分:3)

正如ASP.NET团队所说,你可能已经越过了流媒体#34;请确保您following the breaking changes并且不包含多个beta版本的软件包(请确保您不同时拥有beta4beta5例如,引用 - 最简单的检查方法是搜索你的project.lock.json。)最常见的事故来自使用.Interfaces包,因为大多数包已经重命名为.Abstractions,但那里已经有其他程序集命名更改(以及删除!)。

更新

当您无法通过已配置的服务器和正在运行的dnvm版本访问NuGet软件包时,也会出现此错误。 (最近有一个更新dnvm我必须升级才能使用最新的软件包;似乎即使在单个测试版号内,流仍然可以越过!)让VS2015使用特定的{{ 1}},可能需要dnvm

global.json

答案 1 :(得分:1)

Matt DeKrey是对的。我不需要越过溪流。简而言之,我需要beta6并且在beta4上。以下是要修复的步骤:

1更改project.json

现在看起来像这样

  "dependencies": {
    "Microsoft.AspNet.Server.IIS": "1.0.0-beta6",
    "Microsoft.AspNet.Server.WebListener": "1.0.0-beta6",
    "Microsoft.AspNet.Diagnostics": "1.0.0-beta6",
    "Microsoft.AspNet.Mvc": "6.0.0-beta6",
    "EntityFramework.SqlServer": "7.0.0-beta6",
    "EntityFramework.InMemory": "7.0.0-beta6",
    "Microsoft.AspNet.Identity": "3.0.0-beta6"
  }

2添加Nuget.config

重要的是,我需要将Nuget.config文件添加到我的存储库的根目录,因为beta6尚未在NuGet中。

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <packageSources>
    <add key="AspNetVNext" value="https://www.myget.org/F/aspnetvnext/api/v2" />
    <add key="NuGet" value="https://nuget.org/api/v2/" />
  </packageSources>
</configuration>

AspNetVNext条目是我们在Default Unstable运行时看到的dnvm条目。