小编Com*_*eak的帖子

无法生成用于构建和调试的资产。OmniSharp 服务器未运行

在 Visual Studio (VS) Code 上,使用 C# 进行编码。我正在尝试生成要构建和调试的资产,但收到以下错误消息:无法生成要构建和调试的资产。OmniSharp 服务器未运行。

我在跑:

  • .NET版本3.1.301
  • 视窗8.1
  • Visual Studio Code 1.46.1(用户设置)
  • Powershell 5.1

到目前为止,我已经尝试卸载 VS 代码和 C# 扩展,我将 设置.json 中的omnisharp.path 更新为最新版本,并更新了 powershell 版本。

我尝试生成用于构建和调试的资产的代码确实可以运行,因此我不确定还应该在哪里寻找问题的根源。

如果您需要更多详细信息,请随时询问

c# code-generation omnisharp visual-studio-code

17
推荐指数
4
解决办法
4万
查看次数

如何抑制“执行请求时发生未处理的异常”。使用 Serilog 记录消息

app.UseExceptionHandler当使用异常处理程序 lambda / delegate(文档)实现我自己的异常处理程序时,我不希望 Microsoft 的异常处理程序中间件记录此错误:

执行请求时发生未处理的异常。

此异常消息使我的日志文件变得混乱,因为我自己负责使用适当的 LogLevel 记录异常。

这就是我注册自己的 ErrorHandler 的方式:

app.UseExceptionHandler(errorApp =>
                errorApp.Run(ErrorHandler));
Run Code Online (Sandbox Code Playgroud)

正如本期所述,通过简单的方式过滤此确切消息,没有其他方法是不可能的。

如何过滤这个确切的日志消息而不从中间件中过滤任何其他内容?

我在用:

  • ASP.NET 核心 3.1
  • 串行日志3.4.0

logging exception serilog .net-core asp.net-core

7
推荐指数
1
解决办法
3357
查看次数

使用Chrome进行WebStorm调试 - 在WebStorm中使用有用的控制台和设置断点的最佳工作流程

我想要实现的主要目的是直接在WebStorm中设置断点,而不必再次在Chrome中找到它们(我目前以最快的方式使用警告来执行此操作......),而不会丢失Chrome中的任何可用功能.

我目前正试图从调试Chrome中的JavaScript切换到WebStorm中的调试.我使用远程调试和Chrome插件进行了设置,效果非常好.

但是WebStorm中的控制台风格和选项与我在Chrome中的风格和选项相差甚远.console.warn与console.log输出颜色相同,我无法过滤输出中的错误或警告.是否有任何插件或选项可以改善这种行为,还是我需要坚持使用Chrome控制台?

如果我回到使用Chromes控制台,在启动开发人员工具时JetBrains调试插件被禁用,使得在WebStorm中设置的断点无用 - 是否有更好的工作流程来充分利用这两个世界?

更新:我正在使用"调试器"; 现在代码中的命令,它至少比我之前使用的方式更好.来源:在代码中设置一个javascript断点 - 在chrome中?

我仍然愿意接受更好的建议,我不需要为调试目的更改代码.

/ edit:这是我的控制台颜色设置和输出的屏幕截图(上面有相应的命令): 在此输入图像描述

javascript debugging google-chrome webstorm console.log

6
推荐指数
1
解决办法
653
查看次数

ASP.NET Core 3.1 InProcess 托管应用程序在启动异常后未重新启动

问题

我有一个使用 IIS 托管的 InProcess ASP.NET Core Web 应用程序。我实现了每次启动时抛出的异常。正如预期的那样,IIS 显示此错误页面:

HTTP 错误 500.30 - ANCM 进程内启动失败

此问题的常见解决方案:

  • 应用程序无法启动
  • 应用程序启动但随后停止
  • 应用程序启动但在启动过程中抛出异常

故障排除步骤:

  • 检查系统事件日志以获取错误消息
  • 启用记录应用程序进程的标准输出消息
  • 将调试器附加到应用程序进程并检查

有关更多信息,请访问:https : //go.microsoft.com/fwlink/?LinkID=2028265

在 .Net Core 2.2(带有CaptureStartupErrors(false))以及经典的 ASP.NET 应用程序中,IIS 尝试在下一个请求时再次启动应用程序。

对于 .Net Core 3.1,它不会尝试重新启动,它只会永远保持这种状态,无论我为CaptureStartupErrors.

解决方法

我可以通过捕获异常并退出来解决此问题 - 如果我这样做,它将按预期运行:

public static void Main(string[] args)
{
    try
    {
        CreateWebHostBuilder(args).Build().Run();
    }
    catch (Exception)
    {
        Environment.Exit(-1);
    }
}
Run Code Online (Sandbox Code Playgroud)

预期行为

对于如何更改此行为的任何想法,我都很高兴,因此在不使用此解决方法的情况下,它的行为与以前相同。如果我的应用程序抛出一个未处理的异常,它应该退出并尝试在下一个请求时重新启动。

我试过的

  • 使用不同的值 CaptureStartupErrors
  • 查找更改此行为的配置参数
  • 在“发布”-配置而不是“调试”中发布
  • 在 Github 上创建了一个问题

重现问题的代码

Github …

c# asp.net iis .net-core

5
推荐指数
1
解决办法
2013
查看次数

WebStorm 11 - 用于搜索/替换丢失的多行按钮?

我最近将WebStorm升级到版本11(在OS X El Capitan上).我再也找不到多行按钮了.

我可以开始多行搜索,如果我选择多行代码并按Cmd + F,并通过执行相同的操作并按下Cmd + F后面的多行替换,Cmd + R但我无法找到一种方法一步完成或不采用代码作为基础搜索.我可以用一次换行Alt + Enter,但只能换一次.

更新前(来源): 多行搜索按钮

更新后: 没有多行搜索按钮

我是如何获得按钮或至少是多行搜索的快捷方式的任何想法?我没有找到任何设置.

intellij-idea webstorm

3
推荐指数
1
解决办法
414
查看次数

IdentityServer4多个WSFederation-providers导致异常

我被告知我将在这里描述的问题不是IdentityServer中的错误,所以我可能做错了什么:

此代码在使用EFCore的QuickStart项目中使用单个WSFederation实例作为标识提供程序工作.

注册提供者:

services.AddAuthentication()
            .AddWsFederation("WsFederation", options =>
            {
                options.SignInScheme = IdentityServerConstants.ExternalCookieAuthenticationScheme;
                options.Wtrealm = realm;
                options.MetadataAddress = metadata;
                options.Events.OnTicketReceived += OnTicketReceived;
            })
Run Code Online (Sandbox Code Playgroud)

OnTicketReceived-事件处理程序:

/// <summary>
/// Transform the UPN-claim to the sub-claim to be compatible with IdentityServer4
/// </summary>
private async Task OnTicketReceived(TicketReceivedContext ticketReceivedContext)
{
     var identity = ticketReceivedContext.Principal.Identities.First();
     identity.AddClaim(new Claim("sub", ticketReceivedContext.Principal.FindFirstValue("http://schemas.xmlsoap.org/ws/2005/05/identity/claims/nameidentifier")));

}
Run Code Online (Sandbox Code Playgroud)

一旦我添加第二个提供程序,我将在尝试使用第二个提供程序时遇到异常,因为添加的第一个提供程序接收请求并在收到请求后立即抛出异常:

services.AddAuthentication()
.AddWsFederation("WsFederation_LocalHost", "WsFederation_LocalHost", options =>
                {
                    options.SignInScheme = IdentityServerConstants.ExternalCookieAuthenticationScheme;
                    options.Wtrealm = "urn:aspnetcorerp";
                    options.MetadataAddress = "http://localhost:5000/wsfederation";
                    options.Events.OnTicketReceived += OnTicketReceived;
                    options.RequireHttpsMetadata …
Run Code Online (Sandbox Code Playgroud)

c# ws-federation .net-core asp.net-core identityserver4

2
推荐指数
1
解决办法
1318
查看次数

使用c#反序列化复杂的JSON对象

我知道如何反序列化基本的Json对象.我遇到嵌套对象的问题; 例如,这是一个我想要反序列化的例子.

{
    "data": {
        "A": {
            "id": 24,
            "key": "key",
            "name": "name",
            "title": "title"
        },
        "B": {
            "id": 37,
            "key": "key",
            "name": "name",
            "title": "title"
        },
        "C": {
            "id": 18,
            "key": "key",
            "name": "name",
            "title": "title"
        },
        "D": {
            "id": 110,
            "key": "key",
            "name": "name",
            "title": "title"
        }
      },
    "type": "type",
    "version": "1.0.0"
}
Run Code Online (Sandbox Code Playgroud)

现在"data"有一个未知数量的对象,可能是100可能是1000或可能只有1,所有这些对象都有不同的名称.我的最终目标是获取数据中每个对象的信息.

我试过基本的json,但根本没用.

无论如何,这是我试过的......

我做了一个叫做数据的课

public class data
{
    public long id { get; set; }
    public string key { get; set; }
    public …
Run Code Online (Sandbox Code Playgroud)

c# serialization json json.net

0
推荐指数
1
解决办法
4062
查看次数

IdentityServer4 作为带有 .Net Core WSFederation preview2 的 WSFederation-client

我正在尝试向 IdentityServer4 添加 WSFederation 身份验证提供程序。最近Microsoft.AspNetCore.Authentication.WsFederation Preview 2发布了,我能够将它添加到普通的 Asp.NetCore 应用程序中。

但是我很难将它添加到IdentityServer4 EntityFramework-Quickstart-Example 中。

这就是我在 Startup.cs/ConfigureServices-method 中添加 AuthenticationProvider 的方式:

services.AddAuthentication()
                .AddWsFederation("WsFederation", options =>
                {
                    options.Wtrealm = realm;
                    options.MetadataAddress = metadata;
                })
Run Code Online (Sandbox Code Playgroud)

我在前端获得了 WSFederation 按钮,我也可以登录。但是在回调之后我收到这个错误:

InvalidOperationException:子声明缺少 IdentityServer4.Hosting.IdentityServerAuthenticationService.AssertRequiredClaims(ClaimsPrincipal principal)

我可以理解这是从哪里来的,它是IdentityServer4 的 IdentityServerAuthenticationService.cs 中的这一行,它需要一个“子”声明——WSFed 不会返回这样的声明:

if (principal.FindFirst(JwtClaimTypes.Subject) == null) throw new InvalidOperationException("sub claim is missing");
Run Code Online (Sandbox Code Playgroud)

据我所知,我无法配置此声明,尽管快速入门项目中有一些表似乎可以用于此目的,尤其是那些 2: dbo.IdentityResources 表 dbo.IdentityClaims 表

我已经尝试将我想使用的声明而不是主题声明添加到表中,但它似乎没有任何影响,我也不知道数据库如何映射到我在代码中添加的身份提供者. 我很乐意为您提供有关后续步骤的任何提示,或者如果您知道任何示例,那就更好了。

PS:已经有一些关于这个主题的问题,但它们都是在 .Net Core 实现 WSFederation 之前可用的,或者参考 WSFederation 服务器的示例,而不是客户端。

c# ws-federation .net-core asp.net-core identityserver4

0
推荐指数
1
解决办法
2262
查看次数