在以前的asp.net版本中,框架负责从线程池中分配所有线程,并且web.config中有一个配置来设置它(最大线程数等).那么哪个组件在新的ASP.NET中负责呢?我没有找到任何特殊的中间件,我想它应该发生在中间件之前,也许在Kestrel中.
我现在正在使用这个 docker 镜像:
microsoft/dotnet:2.2.2-aspnetcore-runtime-alpine
我想升级到 2.2.7,但无法在 docker 上找到正确的标签:
这个urlhttps://registry.hub.docker.com/v1/repositories/microsoft/dotnet/tags似乎只有2.2.2作为最新版本。
微软似乎已经转移到他们自己的 docker 存储库 (mcr.microsoft.com/dotnet/core/runtime:2.2),同时维护 docker hub 上的文档?我真的很困惑那里发生的事情。
所以我真的想找到一个与我的原始版本2.2.7相对应的图像,用于aspnet或普通运行时(没有aspnet)
我有这个代码:
var task1 = operation1();
var task2 = operation2();
var result1 = await task1;
var result2 = await task2;
Run Code Online (Sandbox Code Playgroud)
我也处理UnobservedTaskException(通过记录它)。我面临的问题是,在 task1 失败并首先等待导致异常后,task2 以错误形式完成,然后我有一个我不想看到的日志条目,因为我已经记录了第一个异常,然后所有后续我对例外不感兴趣。
所以我想知道是否有办法做一些事情,以便在我得到异常后以某种方式“忽略”所有任务。
我知道我可以使用await Task.WhenAll,但缺点是我必须等待所有异常发生,尽管我确信在第一个任务导致异常之后,我不需要等待其他任务作为整体完成操作已经失败。
另一种可能的解决方案是编写 try/catch 并取消所有任务,但这有点麻烦。
PS 这个例子是简化的,我确实有多个任务像这样运行。所以我正在寻找一个适用于任意数量任务的通用解决方案
根据发布模式下的文档,bundler应该使用.min.js文件(如果存在).我通过以下方式添加角度:
bundles.Add(new ScriptBundle(Bundles.Scripts).Include(
"~/Content/Scripts/angular.js"));
Run Code Online (Sandbox Code Playgroud)
我在同一个文件夹中有angular.js和angular.min.js.所以根据我的理解,bundler应该只使用angular.min.js并且不做任何事情.但是当我在http响应中检查结果时,它会有所不同.它也缩小了,但所有的名字都不同:
我在浏览器中得到的内容:
(function(n,t,i){"use strict";function v(n)
Run Code Online (Sandbox Code Playgroud)
Angular.min.js
(function(P,X,u){'use strict';function M(b)
Run Code Online (Sandbox Code Playgroud)
有人可以解释为什么会这样吗?捆绑器是否只是忽略.min文件或者再次缩小.min.js?
PS我试图删除angular.js文件,然后我得到一个空的结果,所以看起来捆绑器根本不关心angular.min.js存在.
我的项目中有一条简单的路线:
routes.MapRoute(
name: "api",
template: "api/{controller}/{action}");
Run Code Online (Sandbox Code Playgroud)
在我的控制器中,我有两个动作:
[HttpGet]
public string Get(string value)
{
return value;
}
[HttpGet]
public string Get(int id)
{
return id.ToString();
}
Run Code Online (Sandbox Code Playgroud)
现在,当我尝试做一个像api/controller/get?id=1它不起作用的URL ,因为框架无法区分两个动作.据我所知,它在普通的web api中运行得非常好,因为很明显这个url只根据它的参数匹配其中一个动作.我做错了什么或新的MVC6不支持?
Can I use 页面说Chrome已经支持brotli一段时间了.我认为Accept-Encoding字符串将是这样的:
Accept-Encoding:gzip, deflate, sdch, br
Run Code Online (Sandbox Code Playgroud)
但是我检查了对StackOverflow的请求,例如它不包含brotli:
Accept-Encoding:gzip, deflate, sdch
Run Code Online (Sandbox Code Playgroud)
我想大多数网络服务器都不会真正归还你,brotli如果它不在Accept-Encoding,所以它只是看起来部分支持.
它会在以后添加还是有一些我不知道的技巧?
我对 Azure 表存储运行一个简单的命令:
var operation = TableOperation.InsertOrReplace(entity);
await cloudTable.ExecuteAsync(operation);
Run Code Online (Sandbox Code Playgroud)
现在 ExecuteAsync 返回的结果不仅仅是Task,而是Task<TableResult>。TableResult包含HttpStatusCode. 这是否意味着该操作可以直接执行而不会引发任何异常,并且状态代码将为 500 或其他内容,而我需要自己验证这些内容?或者我只会得到成功代码和异常。
我找不到任何关于该文件的文档,并且很难从表存储中引发错误来弄清楚它是如何工作的。
PS我Microsoft.WindowsAzure.Storage.Table现在使用,但计划切换到新开发的Cosmos for .Net Core库,但它仍然是测试版。
PPS 已经发现它用于例如未找到元素时的 404,这实际上是预期的而不是例外。另外,错误的键也会导致异常,可能是 403 或 401 的结果。目前还不清楚失败是否会导致异常,但所有都指向将抛出异常的方向。
ExceptionHandlerMiddleware Microsoft 在此处提供了此示例。这是摘录:
app.UseExceptionHandler(errorApp =>
{
errorApp.Run(async context =>
{
...
var exceptionHandlerPathFeature = context.Features.Get<IExceptionHandlerPathFeature>();
if (exceptionHandlerPathFeature?.Error is FileNotFoundException)
{
await context.Response.WriteAsync("File error thrown!");
}
...
});
});
Run Code Online (Sandbox Code Playgroud)
我不太明白为什么他们会使用?.运算符来获取异常?可以在没有 的情况下触发该委托IExceptionHandlerPathFeature吗?在没有保证对异常的访问的情况下拥有异常处理程序似乎不合逻辑。
这是代码,其中似乎不可能有 null 。
我正在dotnet publishASP.Net 项目和控制台项目上运行(通过 VS2019 GUI 或命令,相同的结果)。
看来行为有所不同。所有内容appsettings*.json都会在 ASP.Net 中自动复制,但只有当我将它们设置为<CopyToOutputDirectory>Always</CopyToOutputDirectory>.
这是某种错误还是它真的被设计为根据项目类型而有所不同?
这种行为对我来说看起来有点奇怪。
Visual Studio Code 向我显示了奇怪的打字稿错误,但这些错误并不真实。当我输入时,VSC 似乎发现语法错误(这可能是真的)。但是当我停止输入并且语法正确时,它仍然显示错误的错误,例如:
[
如果我关闭该文件并再次打开它,错误就会消失。许多不同的错误都会发生这种情况,而不仅仅是这个错误。
此外,如果我确实写了一个换行符,即使文本已移动,错误似乎也会“卡在”行/列上。
compiler-errors syntax-highlighting syntax-error typescript visual-studio-code
c# ×6
asp.net-core ×4
.net-core ×3
.net ×2
asp.net ×1
asp.net-mvc ×1
azure ×1
brotli ×1
docker ×1
exception ×1
http ×1
syntax-error ×1
task ×1
typescript ×1