所以现在正试图在OS X上测试新的Visual Studio代码,但遇到了无数的问题.
现在已经解决了dnu命令的问题,但现在遇到了以下问题:
dnx . kestrel
这将与Visual Studio代码中的" 轻松命令"部分相关,并在终端中显示以下错误消息.到目前为止,一步一步地遵循一切,仍然存在问题.
System.InvalidOperationException: No service for type 'Microsoft.Framework.Runtime.IApplicationEnvironment' has been registered.
at Microsoft.Framework.DependencyInjection.ServiceProviderExtensions.GetRequiredService (IServiceProvider provider, System.Type serviceType) [0x00000] in <filename unknown>:0
at Microsoft.Framework.DependencyInjection.ServiceProviderExtensions.GetRequiredService[IApplicationEnvironment] (IServiceProvider provider) [0x00000] in <filename unknown>:0
at Microsoft.AspNet.Hosting.HostingEngine..ctor (IServiceProvider fallbackServices) [0x00000] in <filename unknown>:0
at Microsoft.AspNet.Hosting.Program.Main (System.String[] args) [0x00000] in <filename unknown>:0
at (wrapper managed-to-native) System.Reflection.MonoMethod:InternalInvoke (System.Reflection.MonoMethod,object,object[],System.Exception&)
at System.Reflection.MonoMethod.Invoke (System.Object obj, BindingFlags invokeAttr, System.Reflection.Binder binder, System.Object[] parameters, System.Globalization.CultureInfo culture) [0x00000] in <filename unknown>:0
--- End of …Run Code Online (Sandbox Code Playgroud) 我已经尝试了几次使用官方Asp.Net文档和其他地方的说明在我的MacBook上运行.Net.最新的尝试是使用此处的Yeoman发生器指令.
但是,当我尝试运行DNU Restore时,我总是会遇到相同的错误,尽管对于不同的库.错误是"unknown header:"后跟一个根据库而不同的数字.这是一个例子(为简洁起见,仅包括前几行和后几行):
Error: DownloadPackageAsync: https://www.nuget.org/api/v2/package/Microsoft.AspNet.Loader.IIS/1.0.0-beta5
Unknown header: 3649249205
----------
System.NotSupportedException: Unknown header: 3649249205
at SharpCompress.Common.Zip.ZipHeaderFactory.ReadHeader (UInt32 headerBytes, System.IO.BinaryReader reader) [0x00000] in <filename unknown>:0
at SharpCompress.Common.Zip.SeekableZipHeaderFactory+<ReadSeekableHeader>c__Iterator0.MoveNext () [0x00000] in <filename unknown>:0
at SharpCompress.Archive.Zip.ZipArchive+<LoadEntries>c__Iterator0.MoveNext () [0x00000] in <filename unknown>:0
at SharpCompress.LazyReadOnlyCollection`1+LazyLoader[SharpCompress.Archive.Zip.ZipArchiveEntry].MoveNext () [0x00000] in <filename unknown>:0
at System.IO.Compression.ZipArchive.CreateZip (System.IO.Stream stream, ZipArchiveMode mode) [0x00000] in <filename unknown>:0
at System.IO.Compression.ZipArchive..ctor (System.IO.Stream stream, ZipArchiveMode mode, Boolean leaveOpen) [0x00000] in <filename unknown>:0
at Microsoft.Framework.PackageManager.Restore.NuGet.PackageUtilities.EnsureValidPackageContents (System.IO.Stream stream, Microsoft.Framework.PackageManager.PackageInfo package) [0x00000] in <filename unknown>:0 …Run Code Online (Sandbox Code Playgroud) 我正在编译一个仅针对dnxcore50的应用程序.
我试图引用一个nuget包,我知道在运行dnx451时工作正常.当我这样做时,dnx . run我得到:
System.InvalidOperationException:无法解析目标框架'DNXCore,Version = v5.0'的以下依赖项:
它也暗示了一个,dnu restore但包裹在那里
它不适用于这个包,所以它在什么情况下(如果有的话)?
为了使它能够工作,包管理器必须构建一个针对dnxcore50编译的版本吗?
这个图表使事情更清晰(从这里复制)
我曾经能够将运行时服务注入IApplicationEnvironment到PogramDNX控制台应用程序类的构造函数中.但是,使用RC1的最新CI版本,服务不再被注入:
public Program(IApplicationEnvironment env)
{
if (env == null)
{
// env is null.
throw new ArgumentNullException(nameof(env));
}
}
Run Code Online (Sandbox Code Playgroud) 我试图弄清楚ASP.NET 5 Web API如何支持内容协商.为了支持XML(除了默认的JSON支持),根据Stack Overflow的另一个答案,我需要从可选的NuGet包中添加该支持.
自那个答案以来,情况发生了一些变化,但是我下拉了Microsoft.AspNet.Mvc.Xml包并编辑了我的Startup.cs文件:
public void ConfigureServices(IServiceCollection services)
{
// Add framework services.
services.AddMvc().AddMvcOptions(options =>
{
options.InputFormatters.Add(new XmlSerializerInputFormatter());
});
}
Run Code Online (Sandbox Code Playgroud)
但是,这不会编译:
"InputFormatter"类型在未引用的程序集中定义.您必须添加对程序集"Microsoft.AspNet.Mvc.Core,Version = 6.0.0.0,Culture = neutral,PublicKeyToken = null"的引用.
以下是完整的编译错误消息:
1>C:\Users\mark\Desktop\WebApplication1\src\WebApplication1\Startup.cs(33,17,33,44): DNX 4.5.1 error CS0012: The type 'InputFormatter' is defined in an assembly that is not referenced. You must add a reference to assembly 'Microsoft.AspNet.Mvc.Core, Version=6.0.0.0, Culture=neutral, PublicKeyToken=null'.
1>C:\Users\mark\Desktop\WebApplication1\src\WebApplication1\Startup.cs(33,45,33,78): DNX 4.5.1 error CS1503: Argument 1: cannot convert from 'Microsoft.AspNet.Mvc.Xml.XmlSerializerInputFormatter' to 'Microsoft.AspNet.Mvc.Formatters.IInputFormatter'
1>C:\Users\mark\Desktop\WebApplication1\src\WebApplication1\Startup.cs(33,17,33,44): DNX …Run Code Online (Sandbox Code Playgroud) 前段时间,我使用 ASP.Net 5 Web 应用程序模板创建了一个项目。我记得当时建造的项目。
现在,当我尝试构建我创建的旧项目时,出现错误
Severity Code Description Project File Line Suppression State
Error CS1061 'ClaimsPrincipal' does not contain a definition for 'GetUserId'
and no extension method 'GetUserId' accepting a first argument of type 'ClaimsPrincipal' could be found
(are you missing a using directive or an assembly reference?) KGWebsite.DNX 4.5.1, KGWebsite.DNX Core 5.0
E:\EShared\Dev2016\KG.Website\KGWebsite\src\KGWebsite\Controllers\Web\ManageController.cs 291 Active
Run Code Online (Sandbox Code Playgroud)
当我使用相同的模板从头开始创建新项目时,新项目将构建。我在对两个项目之间的差异进行故障排除时遇到问题。
两者都使用 DNX4.5.1,它在解决方案资源管理器中显示为引用 Microsoft.AspNet.Identity (3.0.0-rc1-final)
当我在工作副本中钻取 Microsoft.AspNet.Http 的元数据时,我有
#region Assembly Microsoft.AspNet.Http.Abstractions, Version=1.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60
// C:\Users\kirsten\.dnx\packages\Microsoft.AspNet.Http.Abstractions\1.0.0-rc1-final\lib\net451\Microsoft.AspNet.Http.Abstractions.dll
#endregion
Run Code Online (Sandbox Code Playgroud)
在非工作副本中,我有
#region Assembly Microsoft.AspNet.Mvc.ViewFeatures, Version=6.0.0.0, Culture=neutral, …Run Code Online (Sandbox Code Playgroud) 我尝试将ASP.Net 5与Entity Framework 7和SQLite一起使用,我发现了一个奇怪的迁移器行为.
我删除了Visual Studio 2015并使用模板"ASP.NET 5 Template Web Application"创建了一个新项目.
之后我删除了依赖
"EntityFramework.MicrosoftSqlServer": "7.0.0-rc1-final"
Run Code Online (Sandbox Code Playgroud)
并添加了两个依赖项,而不是称为还原包.
"EntityFramework.Sqlite": "7.0.0-rc1-final",
"Microsoft.Data.Sqlite": "1.0.0-rc1-final"
Run Code Online (Sandbox Code Playgroud)
像那样
"dependencies": {
"EntityFramework.Commands": "7.0.0-rc1-final",
"EntityFramework.Sqlite": "7.0.0-rc1-final",
"Microsoft.Data.Sqlite": "1.0.0-rc1-final",
"Microsoft.AspNet.Authentication.Cookies": "1.0.0-rc1-final",
"Microsoft.AspNet.Diagnostics.Entity": "7.0.0-rc1-final",
"Microsoft.AspNet.Identity.EntityFramework": "3.0.0-rc1-final",
"Microsoft.AspNet.IISPlatformHandler": "1.0.0-rc1-final",
"Microsoft.AspNet.Mvc": "6.0.0-rc1-final",
"Microsoft.AspNet.Mvc.TagHelpers": "6.0.0-rc1-final",
"Microsoft.AspNet.Server.Kestrel": "1.0.0-rc1-final",
"Microsoft.AspNet.StaticFiles": "1.0.0-rc1-final",
"Microsoft.AspNet.Tooling.Razor": "1.0.0-rc1-final",
"Microsoft.Extensions.CodeGenerators.Mvc": "1.0.0-rc1-final",
"Microsoft.Extensions.Configuration.FileProviderExtensions": "1.0.0-rc1-final",
"Microsoft.Extensions.Configuration.Json": "1.0.0-rc1-final",
"Microsoft.Extensions.Configuration.UserSecrets": "1.0.0-rc1-final",
"Microsoft.Extensions.Logging": "1.0.0-rc1-final",
"Microsoft.Extensions.Logging.Console": "1.0.0-rc1-final",
"Microsoft.Extensions.Logging.Debug": "1.0.0-rc1-final",
"Microsoft.VisualStudio.Web.BrowserLink.Loader": "14.0.0-rc1-final"
}
Run Code Online (Sandbox Code Playgroud)
接下来,我转到Startup.cs并更改了这样的ConfigurationServices功能
public void ConfigureServices(IServiceCollection services)
{
// Add framework services.
var dbFilePath = Path.Combine(PlatformServices.Default.Application.ApplicationBasePath, "test.db");
services.AddEntityFramework()
.AddSqlite() …Run Code Online (Sandbox Code Playgroud) 我正在尝试创建一个类似于Mvc的路由系统,其中用户创建类/控制器并将HTTP请求路由到它们.我掌握了所有基础知识,并且大多数情况下都使用反射.
当我尝试使用IoC /依赖注入/服务解析器时会出现问题.我希望人们能够创建一个注入服务的控制器(就像mvc一样),只需在构造函数中声明它们需要的内容并将它们添加到IoC容器中.我能够传递/使用System.IServiceProvider来调用我需要的控制器类型上的GetService(Type).除非我专门将控制器类型添加到IoC容器中,否则这不起作用.我不需要在Mvc中为IoC注册一个控制器,所以我确信有一个解决方法.
我试过使用反射来查找正在运行的程序集/ appdomain中的所有'ControllerBase'子类,并在启动时将它们添加到IServiceProvider/IServiceCollection中?但似乎转向ASP.NET 5/Dnx核心5似乎改变了appdomains和程序集的工作方式或访问方式.如何在没有用户注册每个控制器的情况下自动完成此任务的任何方向都会很棒.关于mvc如何做到这一点的任何信息也会很棒.
当我调试ASP.NET 5 Web应用程序时,它会触及我的断点,但我无法观察本地创建的变量的内容.
使用空项目作为模板的startup.cs中的示例代码:
public void Configure(IApplicationBuilder app)
{
app.UseIISPlatformHandler();
var dummy = DateTime.Now;
app.Run(async (context) =>
{
await context.Response.WriteAsync("Hello World! " + dummy);
});
}
Run Code Online (Sandbox Code Playgroud)
当我把断点放在"app.Run(...."它击中断点但我看不到变量dummy的内容.如果我添加虚拟来监视它说"错误CS0103:名称'虚拟'不存在在当前的上下文中".虽然我可以看到DateTime.Now的内容,它每次我悬停它时都会给我确切的日期和时间.当我在MVC控制器中放置一个断点并观察变量时,会发生同样的情况.
我正在学习Pluralsight课程,并且我也参与了我在创建该课程时创建的项目,以及课程附带的示例文件.
在调试期间VS2015连接到dnx.exe进程在视频中我看到VS2015连接到IISExpress.exe进程.但那个课程是从11月开始的.2015年也许有些事情发生了变化.
重启机器没有帮助.
这是我在这里的第一个问题,如果需要更多信息请告诉我,我会尽力提供.
我可以使用此代码执行此操作:
[HttpPost("SampleRoute1")]
public JsonResult Post([FromBody]SampleModel1 value)
{
.....Functionone.....
return Json("");
}
[HttpPost("SampleRoute2")]
public JsonResult Post([FromBody]SampleModel2 value)
{
.....Functiontwo.....
return Json("");
}
Run Code Online (Sandbox Code Playgroud)
但我不能这样做:
[HttpPost("SampleRoute1")]
public JsonResult Post([FromBody]SampleModel1 value)
{
.....Functionone.....
return Json("");
}
[HttpPost("SampleRoute2")]
public JsonResult Post([FromBody]SampleModel1 value)
{
.....Functiontwo.....
return Json("");
}
Run Code Online (Sandbox Code Playgroud)
它给出错误" 类型''Controller1'已经定义了一个名为'Post'的成员,它具有相同的参数类型 "
那么有什么方法可以让一个控制器中的两个Post具有相同的参数但具有不同的路径?
像这样 :
发布(SampleModel1)=>"Controller1\SampleRoute1"=>执行Function1
发布(SampleModel1)=>"Controller1\SampleRoute2"=>执行Function2
dnx ×10
asp.net-core ×5
c# ×5
asp.net ×2
macos ×2
.net-core ×1
asp.net-mvc ×1
dnvm ×1
migration ×1
nuget ×1
osx-yosemite ×1
sqlite ×1
terminal ×1