在一些地方,当我阅读 Docker 容器时,我发现有些人说他们在重新启动容器时丢失了他们的数据(保存在容器内而不是卷数据的一部分)。
我尝试创建一个简单的 Ubuntu 容器,如下所示:docker run -it ubuntu /bin/bash
,并在容器内创建了一些文件,然后重新启动它,但我的数据仍然存在。为什么会这样?为什么我的数据还在那里?这是较新版本的 Docker 中的新内容还是我对某些内容有误解?
有人可以告诉我,如何使用TI代码编写器工作室(针对ARM)在C代码中执行内联汇编代码?
我搜索并尝试但没有任何效果.
例如,当我尝试这个非常简单的代码时:
asm("push r0\n");
Run Code Online (Sandbox Code Playgroud)
或这个
__asm("push r0\n");
Run Code Online (Sandbox Code Playgroud)
我总是得到:
[E0002]非法助记符指定推r0
1装配错误,无装配警告
我读到的东西说我以前的代码是GCC风格,TI编译器不接受它!那么我该如何执行自己的内联汇编代码呢?
我在Microsoft教程中找到了这些实体:
public class Enrollment
{
public int Id{ get; set; }
public int StudentId { get; set; }
public Student Student { get; set; }
}
public class Student
{
public int Id { get; set; }
public ICollection<Enrollment> Enrollments { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
我真的需要定义StudentId
属性吗?
在不同类型的关系中,案件会有何不同?例如one-one
和one-many
?
在这个链接http://www.learnentityframeworkcore.com/relationships中我们可以看到,在One-Many和Many-Many中,他们没有定义Id外键属性,但是在One-One中,他们做到了.这是为什么?
我试图在我的ASP.Net Core 2.1 MVC 控制器(在 .Net Docker 容器中运行)中获取请求的远程 IP 地址(即发送请求的客户端的 IP )。考虑到我的 ASP.Net Core 应用程序位于 NGINX 反向代理之后(在 NGINX Docker 容器中运行)。
众所周知,当反向代理将请求重定向到我的 .Net Core 应用程序时,它会更改我请求的源 IP(TCP/IP 层),因此,我将 NGINX 配置为将X-Forwareded-For
原始 IP添加到请求中。从 NGINX 容器重定向到 .Net 容器的请求X-Forwareded-For
在标头中有:
当然,我配置了 .Net Core 以了解这一点:
public void Configure(IApplicationBuilder app, IHostingEnvironment env, IServiceProvider serviceProvider)
{
// Rewrite the header when being redirected (this is required because we are behind reverse proxy)
var forwardedHeadersOptions = new ForwardedHeadersOptions
{
ForwardedHeaders …
Run Code Online (Sandbox Code Playgroud) 我正在执行以下代码片段来测试如何更改线程,在该线程上将await
调用 ing 之后的代码。根据@Stephen Cleary 在这个答案中,为了能够await
在同一线程(上下文)上继续执行异步代码,我需要设置SynchronizationContext
,并且我这样做了,但是,我的代码在不同的线程中继续运行。
static void Main(string[] args)
{
var mainSyncContex = new SynchronizationContext();
SynchronizationContext.SetSynchronizationContext(mainSyncContex);
Console.WriteLine($"Hello World! ThreadId: {Thread.CurrentThread.ManagedThreadId}"); // <-- In thread 1
try
{
Task.Run(async () =>
{
SynchronizationContext.SetSynchronizationContext(mainSyncContex);
Console.WriteLine($"Is there Sync Contex?: {SynchronizationContext.Current != null}");
Console.WriteLine($"Before delay. ThreadId: {Thread.CurrentThread.ManagedThreadId}"); // <-- In thread 3
await Task.Delay(1000).ConfigureAwait(true);
Console.WriteLine($"After delay. ThreadId: {Thread.CurrentThread.ManagedThreadId}"); // <-- In thread 4
throw new Exception();
});
}
catch (Exception e)
{
Console.WriteLine($"Exception: {e.Message} Catch. ThreadId: …
Run Code Online (Sandbox Code Playgroud) 我想直接更改某些属性(ViewModel的)的显示名称,而无需使用[DisplayName("prop name")]
。这应该在返回View之前直接在控制器内部执行,或者在ViewModel类本身内部进行。
我不想更改视图中的任何内容,也不想使用任何数据注释。我该如何实现?
有没有流利的语法可以做到这一点?
我正在使用:ASP.Net Core 2.0
数据注释的问题是我想在运行时获取显示名称(数据注释已预先编译)。
提出此问题的主要原因是找到一种方法来包装IStringLocalizer
本地化数据注释时的行为,尤其是其行为。公认的答案很好地说明了这一点。
我想在我的ASP.Net Core 2.0(带有Kestrel Web服务器)应用程序中使用HTTPS。
官方文档使用pfx格式,但是我想直接使用PEM格式(由Let's crypto生成),而无需进行任何转换(至少在我的C#代码之外没有任何转换)。有可能吗?
c# ssl-certificate .net-core kestrel-http-server asp.net-core
Using
在 Serilog JSON 配置中(例如在 .Net Core 环境中的 AppSettings.json 文件中)实际上做了什么?
让我们以这个配置为例:
"Serilog": {
"Using": [ "Serilog.Sinks.Console" ], <=======***HERE***=========
"MinimumLevel": "Debug",
"WriteTo": [
{ "Name": "Console" },
{
"Name": "RollingFile",
"Args": {
"pathFormat": "logs\\log-{Date}.txt",
"outputTemplate": "{Timestamp:yyyy-MM-dd HH:mm:ss.fff zzz} [{Level}] {Message}{NewLine}{Exception}"
}
}
],
"Enrich": [ "FromLogContext", "WithMachineName", "WithThreadId" ],
"Properties": {
"Application": "My Application"
}
}
Run Code Online (Sandbox Code Playgroud)
在上面的例子中,我们使用了File
sink 而没有将其添加到Using
属性中。但是,一切似乎都正常。
所以我不明白为什么我们基本上需要这个Using
。有人可以向我解释一下吗?
有时我常常看到PHP开发人员在他们的cookie中传递Id,并将数据库中的引用保存到该cookie(因此他们可以通过cookie对用户进行身份验证).但在ASP.Net Core中,我从未见过.
ASP.Net Core如何以及在何处知道此cookie由此用户拥有?一切都存储在内存中(在某种对象中)?
如果是,这是否意味着如果我重新启动我的应用程序,用户应该再次登录?或者ASP.Net Core是否提供了任何方法来保持对cookie的引用,即使在重新启动应用程序之后?
在过去的几个小时里,我一直尝试startup.sh
在 docker 容器启动上启动我的脚本,但由于某种原因它不起作用。
我的 Dockerfile 用于创建图像:
FROM armv7/armhf-ubuntu:latest
MAINTAINER Mohammed Noureldin <m.n.e@hotmail.com>
RUN apt update && apt upgrade -y && apt install -y mumble-server
ADD scripts/startup.sh /startup.sh
Run Code Online (Sandbox Code Playgroud)
我的启动脚本:
#!/bin/bash
/etc/init.d/mumble-server start
Run Code Online (Sandbox Code Playgroud)
这里没有任何反应,虽然我尝试在脚本中创建一个文件,但也没有任何反应!
我尝试直接从命令行执行脚本,但它不起作用我不知道为什么:
docker运行命令:
docker run --name murmur -itd --restart always --network bridge -p 64738:64738 -v /var/lib/mumble-server/ -v /etc/ mnoureldin/murmur:latest /bin/bash -c "bash /startup.sh;/bin/bash"
Run Code Online (Sandbox Code Playgroud)
这是我尝试手动执行脚本时得到的结果:
43b9d8dd4116bc605537c7af35ab186ca165ea6e957fab5908d39b2f085edf41
mohammed@server01:~/Dockerfiles/Mumble $ docker attach murmur
root@43b9d8dd4116:/# bash
.dockerenv boot/ etc/ lib/ mnt/ proc/ run/ srv/ sys/ usr/
bin/ dev/ home/ media/ opt/ …
Run Code Online (Sandbox Code Playgroud) c# ×7
.net-core ×5
.net ×4
asp.net-core ×4
docker ×2
arm ×1
asp.net ×1
asp.net-mvc ×1
assembly ×1
async-await ×1
bash ×1
cookies ×1
dockerfile ×1
serilog ×1