我正在尝试使用ReadKey()来获取密码字段,因此它不会在控制台中显示我在Ubuntu上运行的.net核心应用程序.
这是代码:
while (true)
{
var key = System.Console.ReadKey(true);
if (key.Key == ConsoleKey.Enter)
break;
Io.RootPass += key.KeyChar;
}
Run Code Online (Sandbox Code Playgroud)
但是我得到了这个例外:
发生异常:CLR/System.InvalidOperationException System.Console.dll中发生未处理的类型"System.InvalidOperationException"异常:'当应用程序没有控制台或重定向控制台输入时,无法读取密钥.试试Console.Read.'
ReadLine()工作正常.为什么ReadKey()不起作用?
编辑:
实际上Console.ReadLine()不起作用,它只是不抛出异常.输入命中时不会分配返回值,因此程序会坚持下去.
我猜这是因为linux终端的工作方式不同.Linux终端有不同的界面吗?
文档显示了如何在发生异常时设置页面:https://docs.microsoft.com/en-us/aspnet/core/fundamentals/error-handling
但是如何在我的服务器上的日志文件中记录异常的详细信息?
是否在任何地方默认记录异常和错误,或者我是否必须手动执行此操作?
有没有可用的示例或文档?
在我的asp.net核心应用程序(角4前端)我接受这样的URL:
example.com/report;url=http%3A%2F%2Fexample2.com
Run Code Online (Sandbox Code Playgroud)
我想创建一个允许人们输入以下网址的重写规则:
example.com/report;url=http://example2.com
Run Code Online (Sandbox Code Playgroud)
我无法找到如何做到这一点.
我试过了:
var options = new RewriteOptions()
.AddRewrite(@"(.*);url=http:\/\/([^;]*)(.*)", "$1;url=http%3A%2F%2F$2$3", skipRemainingRules: false)
.AddRewrite(@"^report.*", "index.html", skipRemainingRules: true)
app.UseRewriter(options);
Run Code Online (Sandbox Code Playgroud)
这不起作用,但即使这样做也不会解释在域之后有斜杠的URL,即子目录.使用组匹配模式我认为不可能这样做.它必须是匹配组上的查找和替换类型操作.
其他Web服务器将此作为解码斜杠的可配置选项.我在asp.net核心文档中找不到任何引用.这可能吗?
在EF6中,此方法可检索实体的导航属性:
private List<PropertyInfo> GetNavigationProperties<T>(DbContext context) where T : class
{
var entityType = typeof(T);
var elementType = ((IObjectContextAdapter)context).ObjectContext.CreateObjectSet<T>().EntitySet.ElementType;
return elementType.NavigationProperties.Select(property => entityType.GetProperty(property.Name)).ToList();
}
Run Code Online (Sandbox Code Playgroud)
IObjectContextAdapter但是在EF Core中不存在。我应该在哪里获取实体的导航属性列表?
我正在运行此命令来观看 .scss 文件node-sass-chokidar ./scss -o ./build --watch
如果我在记事本++中编辑文件,一切正常并且文件可以编译。
如果我在 VSCode 中编辑它,然后保存后会出现以下错误:
{
"status": 3,
"message": "File to read not found or unreadable: E:/Clients/conversions/css/scss/mobile.scss",
"formatted": "Internal Error: File to read not found or unreadable: E:/Clients/conversions/css/scss/mobile.scss\n"
}
Run Code Online (Sandbox Code Playgroud)
我发现一些线程说这是由原子保存引起的,但 VSCode 开发人员在 github 线程中说 VSCode 不使用原子保存。但后来在另一个线程中他说它会重命名文件,所以我想这可能是个问题。
有谁知道我该如何解决这个问题并使其正常保存?
我正在阅读可观察的角度文档,我遇到了这种语法.
const locations = new Observable((observer) => {
const {next, error} = observer;
//...
}
Run Code Online (Sandbox Code Playgroud)
正在进行什么类型的任务const {next, error} = observer;?
我以前没见过这个.任何人都可以给我正确的术语或发生的事情的细分吗?
我有一个添加了 docker compose 支持的解决方案。在运行下拉列表中添加支持后,我可以选择使用 docker compose 运行项目。
Docker compose 在解决方案树中显示为一个节点。
但是,如果我从 repo 克隆代码,docker-compose 节点就在那里,但它不是运行菜单下的一个选项。此外,这种情况有时会在我打开现有项目时随机发生,并且使用 docker compose 运行的选项已经消失,但节点仍然存在。切换分支时也会发生这种情况。
为了解决这个问题,我必须删除 docker-compose 节点,然后重新添加支持并选择不覆盖文件的选项。然后该选项再次出现。
为什么会这样?为什么解决方案资源管理器中的 docker compose node 显示但运行选项不存在?在这两种情况下, dockerfile 运行选项都在那里,但没有 compose 选项。
我正在尝试MethodInfo从方法中获取 ,TableExists<T>以便我可以使用类型调用它。
该方法在OrmLiteSchemaApi类中声明。有2个重载:
public static bool TableExists<T>(this IDbConnection dbConn)
{
// code omitted
}
public static bool TableExists(this IDbConnection dbConn, string tableName, string schema = null)
{
// code omitted
}
Run Code Online (Sandbox Code Playgroud)
我试图得到MethodInfo这样的:
var tableMethod = typeof(OrmLiteSchemaApi).GetMethod("TableExists");
Run Code Online (Sandbox Code Playgroud)
但它会产生异常:
System.Reflection.AmbiguousMatchException: '找到了不明确的匹配。'
我只能找到一个与此相关的旧问题,该问题建议将空对象数组作为参数传递,但这似乎不适用于 .net 核心。
我想我需要指定特定的重载,但我不确定具体如何。
我如何获得MethodInfo?
当我尝试将 80mb 文件从邮递员上传到我在 IISExpress 上的 Visual Studio 2019 中运行的本地端点时,我收到以下错误:
请求过滤模块,用于拒绝超过请求内容长度的请求。
所以我将它添加到了项目的 applicationhost.config 中:
<system.web>
<httpRuntime maxRequestLength="1050000" />
</system.web>
<system.webServer>
<security>
<requestFiltering>
<requestLimits maxAllowedContentLength="1073741824"/>
</requestFiltering>
</security>
Run Code Online (Sandbox Code Playgroud)
这会阻止我发出 API 请求时出现的错误,但现在我只得到一个 ServiceStack 生成的“快照”页面,告诉我请求花费了多长时间和日期,但我的实际端点从未被命中。
在我的日志中,我可以看到 ServiceStack 抛出此异常:
2020-07-20 01:57:56.0497||ERROR|ServiceStackHost|请求正文太大。Microsoft.AspNetCore.Server.IIS.BadHttpRequestException:请求正文太大。在 Microsoft.AspNetCore.Server.IIS.BadHttpRequestException.Throw(RequestRejectionReason reason) 在 Microsoft.AspNetCore.Server.IIS.Core.IISHttpContext.InitializeRequestIO() 在 Microsoft.AspNetCore.Server.IIS.Core.IISHttpContext.ReadAsync(内存
1 memory, CancellationToken cancellationToken) at Microsoft.AspNetCore.Server.IIS.Core.HttpRequestStream.ReadAsyncInternal(Memory1 缓冲区) , CancellationToken CancellationToken) 在 Microsoft.AspNetCore.WebUtilities.BufferedReadStream.EnsureBufferedAsync(Int32 minCount, CancellationToken cancelationToken) 在 Microsoft.AspNetCore.WebUtilities.MultipartReaderStream.ReadAsync(Byte[] buffer, Int32 offset, Int32 count, CancellationToken cancelNetCore) 在 Microsoft.Asp .WebUtilities.StreamHelperExtensions.DrainAsync(流流,ArrayPool1 bytePool, Nullable1 个限制,CancellationToken 取消令牌)在 Microsoft.AspNetCore.WebUtilities.MultipartReader.ReadNextSectionAsync(CancellationToken cancelationToken) 在 Microsoft.AspNetCore.Http.Features.FormFeature.InnerReadFormAsync(CancellationToken cancelationToken) …
我在本文中学习了模块化整体项目结构:https://codewithmukesh.com/blog/modular-architecture-in-aspnet-core
其中大部分对我来说是有意义的,但我不太明白的是:
跨模块通信只能通过接口/事件/内存总线进行。跨模块数据库写入应保持最小或完全避免。
跨模块通信究竟是什么样子的?
假设我有 3 个模块:
我的安全模块注册了一个端点DisableUser。此端点的工作是更新User与Product处于禁用状态的用户关联的所有信息。
模块如何在工作单元中Security调用User和更新状态方法?Product
我的理解是,这种模式的目的是让以后更容易地将模块提取到微服务,所以我想将其作为某种任务可以更容易地更改为消息代理,但我只是不确定如何这应该看起来。
我的例子显然是人为的,我的主要观点是当涉及读/写时模块如何一起通信?
c# architecture design-patterns asp.net-core modular-monolith
c# ×6
asp.net-core ×3
.net-core ×2
angular ×1
architecture ×1
iis-express ×1
node-sass ×1
servicestack ×1
typescript ×1