タグ付けされた質問 「c#」

C#(「seesharp」と発音)は、Microsoftによって開発された、静的に型指定された高レベルのマルチパラダイムプログラミング言語です。C#コードは通常、Microsoftの.NETファミリのツールとランタイムを対象としています。これには、.NET Framework、.NET Core、Xamarinなどが含まれます。このタグは、C#またはC#の正式な仕様で記述されたコードに関する質問に使用します。

1
ASP.NET CoreのHttpRequest.PathとHttpRequest.PathBaseの違いは何ですか?
詳細については、https://docs.microsoft.com/en-us/dotnet/api/microsoft.aspnetcore.http.httprequest?view = aspnetcore-3.0をご覧ください。ASP.NETCoreのHttpRequestクラスには、PathとPathBaseプロパティの両方が含まれています。 これら2つのプロパティの違いは何ですか?それぞれ何に使用されていますか?の意味はPathBase何ですか?a Pathとaの両方を持つことの意味は何PathBaseですか? なぜそれが現状のままであるかを詳しく説明したドキュメントが見つかりません-アイデアはありますか?

1
MVCアプリケーションでUser.Claimsが空である
.NET Core 2.2 MVCアプリケーションを3.0にアップグレードする作業をしています。このアプリケーションでは、JWTトークンを使用してコントローラーを認証しています。トークンにはいくつかのクレームが含まれていますがUser.Claims、結果のリストからそれらにアクセスしようとすると、常に空になります。 私にはStartup.cs私はそうのような認証を設定しています。 public class Startup { public void ConfigureServices(IServiceCollection services) { // Code removed for clarity // services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme) .AddJwtBearer(options => { options.TokenValidationParameters = new TokenValidationParameters { ValidateIssuer = true, ValidateAudience = true, ValidateLifetime = true, ValidateIssuerSigningKey = true, ValidIssuer = JwtManager.Issuer, ValidAudience = "MyAudience", IssuerSigningKey = "MySigningKey" …

1
相互に依存する2つのプロパティを検証する方法は?
私は2つのプロパティを持つビューモデルを持っていますAし、B私はそれを検証しますA < B。 以下は、カスタム検証ルールを使用する簡単な実装です。各プロパティは個別に検証されるため、厄介な問題Aが発生します。入力された値が無効な場合B、の検証はBについて何も知らないため、変更後もそのままですA。 これはこのデモで見ることができます: Aを入力した後は無効です。11それ以降は正しい11 > 2です。に変更Bし22ても再評価されません。検証に合格AするAには編集する必要があります。 私が欲しいものは?赤い境界線を確認22しBた後(検証エラー)が消えA = 11, B = 22、ビューモデルのソース値になることを望みます。 新しい値がソースと同期された後、B検証でどうやって検証を強制することができますか?AB モデルを見る: public class ViewModel : INotifyPropertyChanged { int _a; public int A { get => _a; set { _a = value; OnPropertyChanged(); } } int _b; public int B { get => _b; set { …

2
構造体のクラスメンバーを持つC#8でnullの逆参照の可能性に関する警告が表示されないのはなぜですか?
null可能な参照型を有効にしたC#8プロジェクトで、次のコードを使用すると、null逆参照の可能性に関する警告が表示されるはずですが、表示されません。 public class ExampleClassMember { public int Value { get; } } public struct ExampleStruct { public ExampleClassMember Member { get; } } public class Program { public static void Main(string[] args) { var instance = new ExampleStruct(); Console.WriteLine(instance.Member.Value); // expected warning here about possible null dereference } } 場合はinstanceデフォルトコンストラクタで初期化され、instance.Memberデフォルト値に設定されてExampleClassMemberいます、null。したがって、実行時にinstance.Member.ValueがスローさNullReferenceExceptionれます。C#8のnull可能性の検出を理解しているので、この可能性についてコンパイラーの警告が表示されるはずですが、わかりません。何故ですか?

1
.NET Core ConsoleアプリでSerilogを使用する方法
アプリケーションにファイルへのロギング機能を持たせたいと思ったので、デフォルトの.NET Core 2.2ロギングフレームワーク以上のものを探し始めました。私はセリログがその仕事をするかもしれないのを見ます。ただし、依存性注入を使用して.NET Core ConsoleアプリケーションでSerilogをセットアップする方法に関するドキュメントは見つかりません。私が目にするのはASP.NETの資料だけで、おそらく私が必要としているものではありません。 自分で始めました。インストールしました(Nuget): セリログ Serilog.Extensions.Logging Serilog.Sinks.File Serilog.Sinks.Console(すべてのログにSerilogを使用するため) の拡張機能を作成しましたServiceCollection public static void AddLogging(this IServiceCollection services, Microsoft.Extensions.Logging.LogLevel logLevel) { var serilogLogger = new LoggerConfiguration() .WriteTo.Console() .WriteTo.File("log.txt") .CreateLogger(); services.AddLogging(builder => { builder.SetMinimumLevel(logLevel); builder.AddSerilog(logger: serilogLogger, dispose: true); }); } ただし、ロギングは機能します。 ログレベルは私が設定したものではありません。デバッグしたいのですが、serilogがINFOレベルを使用しているようです。なぜ私の設定が尊重されないのですか?結局、私はまだNET Coreのログフレームワークを使用しているので、ログレベルを設定するためにそれを使用しています。 私は実際にこの設定を正しく行っていますか?あるdisposeべきかどうか本当にわかりませんtrue。一般的に、NET CoreのDependency Injectionフレームワークでサービスの処理を処理してほしい。

2
非同期コード、シェア変数、スレッドプールスレッド、スレッドセーフ
async / awaitを使用して非同期コードを作成するとき、通常ConfigureAwait(false)はコンテキストのキャプチャを回避するために、コードがスレッドプールスレッドから次のスレッドプールスレッドにジャンプしていawaitます。これにより、スレッドの安全性に関する懸念が生じます。このコードは安全ですか? static async Task Main() { int count = 0; for (int i = 0; i < 1_000_000; i++) { Interlocked.Increment(ref count); await Task.Yield(); } Console.WriteLine(count == 1_000_000 ? "OK" : "Error"); } 変数iは保護されておらず、複数のスレッドプールスレッド*によってアクセスされます。アクセスのパターンは非並行ですが、理論的には各スレッドがローカルにキャッシュされた値をインクリメントiして、1,000,000回を超える反復が可能になるはずです。しかし、実際にはこのシナリオを作成することはできません。上記のコードは、私のマシンでは常にOKを印刷します。これは、コードがスレッドセーフであることを意味しますか?またはi、lock?を使用して変数へのアクセスを同期する必要があります。 (*私のテストによれば、スレッドの切り替えは平均して2回の反復ごとに発生します)

1
ASP.NET Core 3:カスタムライブラリで3.0.0アセンブリを参照する方法
Microsoft.AspNetCore.Appフレームワーク(別名ASP.NET Core 3.0)を参照するアプリケーションがアセンブリの型を使用していることがわかりますMicrosoft.AspNetCore.Mvc.Abstractions, Version=3.0.0.0, しかし、同じバージョンのNuGetパッケージが見つかりません3.0.0。どうすればパッケージを参照できますか?たとえば、オーバーライドしたい場合、NuGetにそのようなパッケージバージョンがない場合ControlBase、Microsoft.AspNetCore.Mvc.Core, Version=3.0.0.0アセンブリをどのように参照すればよいですか? 以下を追加した後: <ItemGroup> <FrameworkReference Include="Microsoft.AspNetCore.App" /> </ItemGroup> 私には別の種類の衰弱があります: エラーが発生します: NETSDK1073:FrameworkReference 'Microsoft.AspNetCore.App'は認識されませんでしたRoutines.AspNetCore C:\ Program Files \ dotnet \ sdk \ 3.0.100 \ Sdks \ Microsoft.NET.Sdk \ targets \ Microsoft.NET.Sdk.FrameworkReferenceResolution.targets 263 アプリケーションのアンロードと再ロードは役に立ちません。 同じ問題が空の新しいプロジェクトで発生します。 <Project Sdk="Microsoft.NET.Sdk"> <PropertyGroup> <TargetFramework>netstandard2.1</TargetFramework> </PropertyGroup> <ItemGroup> <FrameworkReference Include="Microsoft.AspNetCore.App" /> </ItemGroup> </Project> コンパイル 1> ------すべての再構築が開始されました:プロジェクト:ClassLibrary1、構成:Debug …
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.