当运行我的Web应用程序(在vscode中)时,调试控制台中填充了以下行:
加载了'/foo/bar/dotnet/shared/Microsoft.NETCore.App/2.2.4/System.Private.CoreLib.dll'。跳过的加载符号。模块已优化,调试器选项“ Just My Code”已启用。
和
线程123以代码0(0x0)退出。
我认为这与appsettings.json文件中的日志过滤有关,但是这些不属于我可以禁用的任何类别。
这很烦人-如何禁用它?
我的环境是 ubuntu 18.04 VPS。
我无法获得基于文件的机密以在 docker 容器中使用 mariadb。
docker-compose.yml:version: '3.7'
services:
db:
image: mariadb:10.4.8-bionic
environment:
- MYSQL_ROOT_PASSWORD_FILE=/run/secrets/password_root
- MYSQL_PASSWORD_FILE=/run/secrets/password_user
- MYSQL_DATABASE=database
- MYSQL_USER=admin
secrets:
- password_root
- password_user
secrets:
password_root:
file: .secret_password_root
password_user:
file: .secret_password_user
Run Code Online (Sandbox Code Playgroud)
echo -n secret > .secret_password_root
echo -n secret > .secret_password_user
chown root:root .secret_password*
chmod 400 .secret_password*
Run Code Online (Sandbox Code Playgroud)
(请注意,我可以设置 444,但这会暴露主机上的机密文件,这是一个非常糟糕的主意。)
docker-compose up
Run Code Online (Sandbox Code Playgroud)
错误:
db_1 | /usr/local/bin/docker-entrypoint.sh:第 37 行:/run/secrets/password_root:权限被拒绝
根据文档,机密文件应该挂载为0444,但这显然不会发生。
我创建了一个自定义 Docker 容器,它调用启动脚本。该脚本需要一些数据,这些数据存储在我的.env文件中。
所有文件所需的所有变量都存储在 中.env,这就是我想要保存它的地方。我可以通过这种方式传递变量而不会出现错误...这只是我无法正确传递的数组。
.env:
FOO=1 # blah
BAR='bar' # this does blah
MYARRAY=(
hello # blah
world # blah
)
Run Code Online (Sandbox Code Playgroud)
docker-compose.yml:
mycontainer:
env_file: .env
build:
context: .
args: # pass variables into dockerfile
FOO: ${FOO}
MYARRAY: ${MYARRAY}
Run Code Online (Sandbox Code Playgroud)
Dockerfile:
FROM some_app
ARG FOO
ARG MYARRAY
ENV \
FOO=$FOO \
MYARRAY=$MYARRAY # pass variables into script
CMD [ "myscript.sh" ]
Run Code Online (Sandbox Code Playgroud)
myscript.sh:
FOO=1 # blah
BAR='bar' # this does blah
MYARRAY=(
hello …Run Code Online (Sandbox Code Playgroud) 我正在使用 ASP.NET Core 5 Razor 页面。通用模板进去了Pages/Shared,但我需要将其重命名为Pages/Foo.
如何指示运行时在 中查找文件Pages/Foo?
我认为有可能Startup.ConfigureServices():
services.AddRazorPages(options => {
options.Conventions.??? // what goes here?
});
Run Code Online (Sandbox Code Playgroud) 我在用着FluentAssertions。
对于同步测试,我可以这样写:
action.Should().Throw<ArgumentNullException>().And.ParamName.Should().Be("foo");
Run Code Online (Sandbox Code Playgroud)
对于异步测试,我这样做:
await action.Should().ThrowAsync<ArgumentNullException>();
Run Code Online (Sandbox Code Playgroud)
是否有一种方便的方法来断言ParamName,或者我必须通过包装在 try-catch 中手动完成?
我有一个Comment拥有的实体类型:
public class Comment { // owned entity type
public Comment(string text) { Text = text; }
public string Text { get; private set; }
}
public class Post {
public Post(string content) { Content = content; }
public long Id { get; private set; }
public string Content { get; private set; }
public ICollection<Comment> Comments { get; private set; } = new HashSet<Comment>();
}
Run Code Online (Sandbox Code Playgroud)
AndPost的配置包括:
builder.OwnsMany(x => x.Comments, x => {
x.Property(y => y.Text).IsRequired(); …Run Code Online (Sandbox Code Playgroud) blazor“独立”模板将其包含在项目的.csproj:
<ItemGroup>
<SupportedPlatform Include="browser" />
</ItemGroup>
Run Code Online (Sandbox Code Playgroud)
它是什么?它记录在某处吗?
每当我使用 certbot 进行测试时,我都担心会超出速率限制,从而导致我的帐户受到限制。所以我同时使用--dry-run和--staging选项。
这在许多其他问题和教程中都得到了体现——而且由于它有效,我从不担心它。
但我确信它们之间有区别......它是什么?
C# 10 为我们提供了文件范围的命名空间。所以这:
using Foo;
using Bar;
namespace Baz {
// ...
}
Run Code Online (Sandbox Code Playgroud)
可以写成:
using Foo;
using Bar;
namespace Baz;
// ...
Run Code Online (Sandbox Code Playgroud)
命名空间之前和之后的使用之间存在差异。编译器是否会自动将其重新排序为:
namespace Baz;
using Foo;
using Bar;
// ...
Run Code Online (Sandbox Code Playgroud)
dotnet build如果没有,是否有msbuildCLI 开关、代码分析器或其他选项来启用此类功能?
许多 SO 答案用于await Task.Delay(1)解决 Blazor (wasm) 中的各种异步渲染问题。我什至在我自己的代码中发现了许多地方这样做“使它起作用”。
然而,它总是按事实陈述,没有彻底的解释,而且我在文档中也找不到这种技术。
一些问题:
await Task.Delay(1)- 我什么时候使用这种技术,用例是什么?Task.Delay(1)和之间有什么区别吗Task.Yield()?c# ×6
asp.net-core ×4
blazor ×2
docker ×2
linux ×2
.net-core ×1
async-await ×1
bash ×1
c#-10.0 ×1
certbot ×1
ef-core-5.0 ×1
lets-encrypt ×1
razor-pages ×1
roslyn ×1
sqlite ×1
testing ×1
yaml ×1