早些时候我问了这个问题并得到了一个有效的答案.为了使您的ASP.Net 5应用程序能够引用以.Net Framework 4.5为目标的普通.Net类库,您必须从project.json文件中删除'"dnxcore50":{}'引用.
大.这适用于一个没有做任何事情的简单ClassLibrary项目.
现在我想尝试使用更复杂的类库.例如,引用其他NuGet包的类库(例如HtmlAgilityPack)和相同的技术不起作用.
这非常令人沮丧.我有点傻眼,简单地引用类库不再适用于新版本的ASP.Net.
似乎要删除的"功能"之一是能够为不在您的解决方案中的项目引用已编译的DLL."浏览"按钮从ASP.Net 5项目的"添加引用"对话框中消失:

经典项目仍然有浏览按钮:

为什么?如何引用我机器上的类库,但我不想包含在我的项目中?
我有几个ASP.NET vNext应用程序,我希望我的CI服务器也能够构建它们.我的本地计算机和CI服务器都运行VS2015 RC.然后我们有了VS Online和一个本地构建控制器 - 这是提到的服务器.
但是,我无法进行构建,因为它似乎在寻找v12工具 - 它不包含任何DNX.
所以 - 构建解决方案给出:

需要安装Dnx Runtime包.有关详细信息,请参阅输出窗口
它被安装-因为它与VS2015 RC,AFAIK来了.所以我认为构建模板不使用v14工具.我下载了默认Git模板v12.确实它说:
<this:Process.BuildProcessVersion>12.0</this:Process.BuildProcessVersion>
Run Code Online (Sandbox Code Playgroud)
所以我将其切换为14,上传模板,运行构建.然后:

异常消息:用于此构建的构建控制器不支持构建定义使用的模板文件的版本.模板文件的版本是14.0.此构建控制器的最大支持版本为12.0.0.0.
所以试图解决这个问题 - 让我看到这个论坛问题:
然后,您需要更改所涉及的MSBuild版本,而不是更改BuildProcessVersion属性.打开构建过程模板,找到Run MSBuild for Project活动,将ToolPath属性更改为2013版本的msbuild
所以 - 我检查了模板 - 没有ToolPath版本.但是有一个ToolVersion属性 - 我将尝试设置为14:

简而言之,我的问题是:如何在我的构建服务器上构建ASP.NET vNext应用程序,该服务器已安装VS2015RC - 但是正在使用v12工具构建?
UPDATE
似乎问题不在于使用错误的工具,而在于在服务帐户(TFS代理正在执行)下运行时查找/使用正确的DNX运行时更多.我为DNX团队添加了一个问题:https://github.com/aspnet/dnx/issues/2239.
我的包project.json使用了node package manager.我nuget在我的Visual Studio 2015 ASP.NET 5Beta 8项目中添加了一个新包.
当我在家上网时,我可以获得下载包.但是当我在办公室时,如果我添加一个新包,我在控制台中会出现以下错误:
PATH =.\node_modules.bin; C:\ Program Files(x86)\ Microsoft Visual Studio 14.0\Common7\IDE\Extensions\Microsoft\Web Tools\External;%PATH%; C:\ Program Files(x86)\ Microsoft Visual Studio 14.0\Common7\IDE\Extensions\Microsoft\Web Tools\External\git C:\ Users\USERNAME.dnx\runtimes\dnx-clr-win-x86.1.0.0-beta8\bin\dnx.exe"C:\Users\USERNAME.dnx\runtimes\dnx-clr-win-x86.1.0.0-beta8\bin\lib\Microsoft.Dnx.Tooling\Microsoft.Dnx.Tooling.dll"restore"C:\ PROJFOLDER\PROJNAME" -f"C:\ Program Files(x86)\ Microsoft Web Tools\DNU"Microsoft .NET开发实用程序Clr-x86-1.0.0-beta8-15858
GET https://www.nuget.org/api/v2/FindPackagesById()?id='AutoMapper '错误:FindPackagesById:AutoMapper发送请求时发生错误.
在Visual Studio 2015解决方案资源管理器中
我明白了:
包恢复失败
如果我nuget在一个不使用的经典类库中使用,npm那么我可以下载相同的包,所以问题似乎仅限于npm
在研究错误时,它被列为GitHub上的一个问题.此问题列出的解决方法是将Windows环境变量设置为公司代理.
但是,我没有在Internet Explorer中设置代理设置.
我的问题:
如何确定我使用的代理?
除了设置环境变量之外,还有其他方法可以使其工作.我尝试了dnx.config解决方法,但它没有用.
我在工作和家里都使用笔记本电脑.他们是一个解决方案,我不必改变办公室和家庭之间的设置?
我在Azure Web App中运行ASP.NET 5项目.
当使用大约1.5mb或更大的文件(表单数据)调用API端点时,我会502 Bad Gateway在响应主体中看到以下消息:
指定的CGI应用程序遇到错误,服务器终止了该进程.
奇怪的是,当上传较小的文件时,通话工作正常.它似乎产生了502大约1.5mb的标记,但它并不完全一致.
我正在使用ASP.NET 5 RC1.
在Startup.cs中,我app.UseIISPlatformHandler();作为方法中的第一个中间件添加Configure().
project.config:
{
...
"webroot": "wwwroot",
"dependencies": {
"Microsoft.ApplicationInsights.AspNet": "1.0.0-rc1",
"Microsoft.AspNet.Mvc": "6.0.0-rc1-final",
"Microsoft.AspNet.Server.Kestrel": "1.0.0-rc1-final",
"Microsoft.AspNet.Diagnostics": "1.0.0-rc1-final",
"Microsoft.AspNet.Authorization": "1.0.0-rc1-final",
"Microsoft.AspNet.Mvc.Core": "6.0.0-rc1-final",
"Microsoft.AspNet.Mvc.Abstractions": "6.0.0-rc1-final",
"Microsoft.AspNet.Authentication.JwtBearer": "1.0.0-rc1-final",
"Microsoft.Extensions.PlatformAbstractions": "1.0.0-rc1-final",
"Microsoft.AspNet.StaticFiles": "1.0.0-rc1-final",
"Microsoft.Extensions.Logging": "1.0.0-rc1-final",
"Microsoft.Extensions.Logging.Abstractions": "1.0.0-rc1-final",
"Microsoft.Extensions.Configuration": "1.0.0-rc1-final",
"Microsoft.Extensions.Configuration.Json": "1.0.0-rc1-final",
"Microsoft.Extensions.Configuration.EnvironmentVariables": "1.0.0-rc1-final",
"Newtonsoft.Json": "6.0.6",
"WindowsAzure.Storage": "5.0.2",
"Microsoft.AspNet.IISPlatformHandler": "1.0.0-rc1-final",
...
},
"commands": {
"web": "Microsoft.AspNet.Server.Kestrel"
},
"frameworks": {
"dnx451": { }
},
}
Run Code Online (Sandbox Code Playgroud)
编辑:
正如Jessevl所建议的那样,抛出以下异常: …
这是测试项目的launchSettings.json文件:
{
"profiles": {
"test": {
"commandName": "test",
"environmentVariables": {
"Hosting:Environment": "Development"
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
测试项目依赖于服务器项目,并使用服务器项目的Startup类直接初始化测试,如下所示:
Server = new TestServer(TestServer.CreateBuilder().UseStartup<Startup>());
Client = Server.CreateClient();
Run Code Online (Sandbox Code Playgroud)
但出于某种原因,当我Startup.Configure在调试器中输入方法时,env.EnvironmentName是生产.我应该在哪里设置测试.xproj的环境名称?
在相关的说明中,我是否应该Startup在测试项目中拥有该类的本地测试版本?文档似乎暗示......否则appsettings会从何而来?他们没有将测试项目显示为在本地拥有appsettings的副本,但我非常确定Startup该类(无论是重用还是本地)都需要它.请指教.
我目前有一个自托管的Owin应用程序,它在Windows上运行,如下所示:
public class Program
{
private static void Main(string[] args)
{
using (WebApp.Start<Startup>("http://localhost:9000"))
{
Console.WriteLine("Press Enter to quit.");
Console.ReadKey();
}
}
}
public class Startup
{
public void Configuration(IAppBuilder app)
{
var listener = (HttpListener) app.Properties["System.Net.HttpListener"];
listener.AuthenticationSchemes = AuthenticationSchemes.IntegratedWindowsAuthentication;
app.UseNancy();
}
Run Code Online (Sandbox Code Playgroud)
当请求进入时,将使用其Windows域凭据验证用户.
对于ASPNetCore,我想知道是否有类似的设置可以使用但是应用程序在Linux上使用Kestrel Web服务器运行.
我听说Windows 2016和OpenIdConnect中间件可能有多种选择,或者我可以使用在Windows上运行的IdentityServer但在Linux上使用应用程序,但我认为需要中间件,我也不清楚是否会有"认证舞蹈"暗示它可能不像我现在那样无缝.
任何建议和/或代码示例将不胜感激.
谢谢
我目前正在尝试编写AuthenticationMiddleware.看到这个答案.应用程序构建没有错误,但当我执行时,dnx web我收到以下错误:
无法找到"Namespace.BasicAuthenticationMiddleware"类型的合适构造函数.确保类型是具体的,并且构造函数接受所有参数.
在Microsoft.Extensions.Internal.ActivatorUtilities.CreateInstance(IServiceProvider provider,Type instanceType,Object []参数)
在Microsoft.AspNet.Builder.UseMiddlewareExtensions.<> c__DisplayClass2_0.b__0(RequestDelegate next)
在Microsoft.AspNet.Builder.Internal.ApplicationBuilder.Build()
在Microsoft.AspNet.Hosting.Internal.HostingEngine.BuildApplication()
失败:Microsoft.AspNet.Hosting.Internal.HostingEngine [7]
我确信我使用的构造函数签名在某种程度上是错误的,但我无法为此找到合适的文档,因为似乎有几十个已弃用的文档.
这是AuthenticationMiddleware:
public class BasicAuthenticationMiddleware : AuthenticationMiddleware<BasicAuthOptions>
{
public BasicAuthenticationMiddleware(
RequestDelegate next,
BasicAuthOptions options,
ILoggerFactory loggerFactory,
IUrlEncoder urlEncoder)
: base(next, options, loggerFactory, urlEncoder) {}
protected override AuthenticationHandler<BasicAuthOptions> CreateHandler()
{
return new BasicAuthenticationHandler();
}
}
Run Code Online (Sandbox Code Playgroud)
BasicAuthOptions:
public class BasicAuthOptions : AuthenticationOptions {
public const string Scheme = "BasicAuth";
public BasicAuthOptions()
{
AuthenticationScheme = Scheme;
AutomaticAuthenticate = true;
}
}
Run Code Online (Sandbox Code Playgroud)
BasicAuthenticationExtensions
public static class …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用示例应用程序(使用类似于启动器模板的项目)为ASP.NET MVC 6设置开发环境(即,我希望能够为MVC本身调试和编写PR) ,我不清楚如何使用依赖项部分创建引用project.json.这是我的:
{
"webroot": "wwwroot",
"version": "1.0.0-*",
"dependencies": {
"Microsoft.AspNet.Server.IIS": "1.0.0-beta3",
"Microsoft.AspNet.Mvc": "6.0.0-beta3",
"Microsoft.AspNet.StaticFiles": "1.0.0.0-beta3",
"Microsoft.VisualStudio.Web.BrowserLink.Loader": "14.0.0-beta3",
"Microsoft.AspNet.Diagnostics": "1.0.0-beta3"
},
"frameworks": {
"aspnet50": { },
"aspnetcore50": { }
},
"bundleExclude": [
"node_modules",
"bower_components",
"**.kproj",
"**.user",
"**.vspscc"
],
"exclude": [
"wwwroot",
"node_modules",
"bower_components"
]
}
Run Code Online (Sandbox Code Playgroud)
我认为这就是你在构建MVC应用程序时开箱即用的内容.但我想Microsoft.AspNet.Mvc用本地替换6.0.0-beta3 的引用- 无论是本地构建的nupkg还是项目文件,我都不确定.我在Aspnet wiki上查看了project.json的解释并没有找到任何帮助,并解释了如何将kpm(折叠成dnx for beta4及更高版本,对吧?)解析版似乎集中在版本图上比起事物的来源.
我现在拥有的是构建了二进制文件/ nupkgs的Mvc仓库,我只是不知道要在依赖项部分放什么.
{
...
"dependencies": {
...
"Microsoft.Aspet.Mvc": ???
...
}
...
}
Run Code Online (Sandbox Code Playgroud) 我在类库中使用DNX实现log4net时遇到问题.我的project.json中有以下内容 -
...
"dependencies": {
"log4net": "2.0.3",
"Microsoft.Framework.Logging": "1.0.0-beta4"
},
"frameworks": {
"dnx451": { },
"dnxcore50": {
"dependencies": {
"System.Collections": "4.0.10-beta-22816",
"System.Linq": "4.0.0-beta-22816",
"System.Threading": "4.0.10-beta-22816",
"Microsoft.CSharp": "4.0.0-beta-22816"
}
}
}
...
Run Code Online (Sandbox Code Playgroud)
当我尝试在类中使用log4net时,我收到以下错误 -

但是,我确实在引用文件夹中看到了DNX 451和50的引用.有没有人想过如何解决这个问题?
此外,如果我从我的project.json文件中删除dnxcore50,它似乎解决了,我可以编译该项目.
每当更改任何文件时,如何执行我的kestrel服务器以重新启动?而不只是停止?
我试过了
dnx --watch . kestrel
Run Code Online (Sandbox Code Playgroud)
但服务器只是停止,我必须手动重新运行该命令
我也尝试过使用npm watch命令,但这似乎只是绊倒了
watch 'dnx --watch . kestrel' .
Run Code Online (Sandbox Code Playgroud)