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

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


1
.net MVC Coreで動的エラーページを処理するにはどうすればよいですか?
現在私は持っています app.UseExceptionHandler("/Home/Error"); 元のパスからの相対パスにしたい。 たとえば Tenant1 / PageThatThrowsError、次にapp.UseExceptionHandler( "Tenant1 / Home / Error"); しかし Tenant2 / PageThatThrowsError、次にapp.UseExceptionHandler( "Tenant2 / Home / Error"); できると思った app.UseExceptionHandler( new ExceptionHandlerOptions { ExceptionHandler = async (ctx) => { //logic that extracts tenant ctx.Request.Path = new PathString(Invariant($"{tenant}/Home/Error")); } } ); しかし、これは500をスローします 編集:たとえばリダイレクトを使用するすべての現在のソリューションは現在のエラーコンテキストを失い、コントローラーがたとえばHttpContext.Features.Get()を呼び出すことを許可しません。

1
C#-オーバーライドされたメソッドの基本バージョンの呼び出し
基本クラスAと派生クラスがあるとしBます。 クラスにAは2つの関数があります:fun1()およびfun2()、はをfun1()呼び出しますfun2()。 クラスはandをBオーバーライドfun1()しfun2()、再度fun1()呼び出しますfun2()。 ただし、base.fun1()オーバーライドを呼び出しますfun2()。非常に不幸なループを作成する基本クラスのバージョンの代わりにbase.fun1()呼び出しfun2()を行うため: fun1() -> fun2() -> base.fun1() -> fun2() -> base.fun1() -> ... のbase.fun1()基本バージョンを強制的に呼び出す方法はありますfun2()か?本当の問題はおそらくこれらのクラスの設計が悪いことにあることは承知していますが、それがどういうわけか可能かどうか私はまだ興味があります。


4
カスタムUnity Androidプラグインで非静的メソッドを呼び出す
私は自分のAndroid用Androidプラグインを構築する方法を理解しようとしています。 Javaクラス(AndroidStudioで作成されたクラス)で静的メソッドを呼び出すことはできましたが、非静的メソッドを呼び出すことはできません。 私はそれらのリンクをチェックします: https://answers.unity.com/questions/884503/cant-call-non-static-method-in-androidjavaclass.html http://leoncvlt.com/blog/a-primer-on-android-plugin-development-in-unity/ https://answers.unity.com/questions/1327186/how-to-get-intent-data-for-unity-to-use.html Unity Androidプラグインから非静的メソッドを呼び出す方法は? しかし、どれも機能しません。 Unityのボタンから次のように呼び出しを取得しようとしています: AndroidJavaClass UnityPlayer = new AndroidJavaClass("com.unity3d.player.UnityPlayer"); AndroidJavaObject currentActivity = UnityPlayer.Get<AndroidJavaObject>("currentActivity"); currentActivity.Call("SayHi"); Androidでの私の活動は次のようになります。 public class MainActivity extends UnityPlayerActivity { private static final String TAG = "LibraryTest"; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); Log.d(TAG, "Created!"); } public void SayHi() { Log.d(TAG, "HI_"); …
8 java  c#  android  unity3d  plugins 

3
属性の代わりにインラインでポリシーのすべてのハンドラーを実行することは可能ですか?
ほとんどのAPIでは、次のように認証を行うだけです。 [Authorize(Policy = "Foo")] public MyApi() 私はこのポリシーをNuGetから取得していますが、変更できません。 一部のAPIでは、このポリシーが常に必要なわけではありません。これは、いくつかの構成に基づいて実行時に理解する必要があります。これをインラインで実行し、セットアップされているすべてのハンドラーが実行されるようにする方法を教えてください。 何度も検索した後、を作成しIAuthorizationService、それを使用してを呼び出すことがわかりましたAuthorizeAsync。これは私が望んでいるようですが、今実行している問題は、すべてのハンドラーAuthorizationFilterContextがコンテキスト上のリソースとしてに依存していることです。これは、AuthorizationAsyncの呼び出しではなく、属性を介してAuthorizationが行われたときに自動的に行われるようです。この場合、手動で渡す必要があります。私のコードは今このようになります: public MyApi() { var allowed = await _authorizationService.AuthorizeAsync(User, null, "Foo").ConfigureAwait(false); } これは私のすべてのハンドラを正しく通過するようですが、がないために機能しませんAuthorizationFilterContext。 1)これはそもそも正しいアプローチですか、またはこれをインラインで実行する他の方法がありますか?これをラップする独自のポリシーを作成する方法がおそらくあり、そこで構成を確認できると思いますが、単純なインラインアプローチがある場合は、それを優先します。 2)この方法が有効である場合、AuthorizationFilterContext?手動で作成してみましたが、コンテキストからより多くのデータを渡さないと、これは実際には正しくないようですが、良い例やドキュメントが見つかりません。 new AuthorizationFilterContext(new ActionContext(HttpContext, HttpContext.GetRouteData(), new ActionDescriptor()), new IFilterMetadata[] { });

1
Azure App Serviceで実行されているASP.NET FrameworkアプリでサーバーGCを無効にする方法
Azure App ServiceでASP.NET MVC 5 / WCFアプリの高密度ホスティングを行っていますが、アイドルアプリはそれぞれ600〜1000 MBのメモリを使用しています。これは、メモリダンプによってGCヒープが明らかになっていることが前提です約40MBまでです。これはサーバーGCが原因であると思われるので、https://docs.microsoft.com/en-us/dotnet/framework/configure-apps/file-schema/runtime/gcserver-element を追加して無効にしてみました <gcServer enabled="false" /> 私のweb.configに、しかしこれは何の効果もないようです GCSettings.IsServerGC まだtrueを返しています。ここで何が欠けていますか? 編集: 通常のIISを使用すると、https://weblogs.asp.net/owscott/setting-an-aspnet-config-file-per-application-poolを使用して実行できますが、Azure App Serviceでは、これを行うための権限がありません。

1
サービスでのメモリマップの使用
サービスとして(を使用して-service)スイッチとしても実行できるアプリケーションを作成しました。コマンドプロンプトからサービスを実行している場合、これは問題なく完全に機能します(真のサービスとして実行されていないときにコンソールからデバッグできるように何かを設定しています)。しかし、それを真のサービスとして実行しようとした後、アプリケーションを使用して既存のメモリマップを開くと、エラーが発生します... 指定されたファイルが見つかりません。 サービスとして、またはコンソールで実行する方法: [STAThread] static void Main(string[] args) { //Convert all arguments to lower args = Array.ConvertAll(args, e => e.ToLower()); //Create the container object for the settings to be stored Settings.Bag = new SettingsBag(); //Check if we want to run this as a service bool runAsService = args.Contains("-service"); //Check if …

2
ロードされているがフォアグラウンドで実行されていないときに、アプリに通知を送信させるにはどうすればよいですか?
時々使うアプリがあります。寝る前にバックグラウンドに置いたにちがいない。目が覚めると、画面にこの通知が表示されていました。 このような通知をXFアプリケーションで表示する方法について誰かが何か提案はありますか? また、これらの通知はAndroidにも表示されますか?私はAndroidフォンでそれらを見たことがありませんが、それは私がそれをはるかに使用していないためです。

1
ASP.NET Core 3を使用したビデオのストリーミング
現在、.NET Coreを使用した最初のプロジェクトとして、ASP.NET Core 3でAPIを構築しています。 私は現在、React.jsフロントエンドにビデオを送信してブラウザーで視聴しようとしています。ファイルとビデオのアップロードは問題なく機能し、以下に表示されている方法でもファイルがクライアントに送信されますが、ビデオが数秒より長い場合、ビデオプレーヤーは本当に遅く、スキップするのにも長い時間がかかりますビデオの数秒。それは、ファイルが最初に完全にダウンロードされてから再生されるためだと思います。 [Route("getFileById")] public FileResult getFileById(int fileId) { var context = new DbContext(); var file = context.File.Find(fileId); if (file == null) { Console.WriteLine("file " + fileId + " not found"); return null; } var content = new FileStream(file.Name, FileMode.Open, FileAccess.Read, FileShare.Read); var response = File(content, "application/octet-stream"); return …

1
UWP ServicePointManager.ServerCertificateValidationCallback
ServicePointManager.ServerCertificateValidationCallbackクラスとメソッドを利用して証明書のピン留めを実装するXamarin.Formsアプリがあります。AndroidとiOSでは、これは問題なく機能し、証明書キーが固定されている予想されるサービスへの接続を許可し、私が持っていないサービスへの接続を許可しません。 ただし、UWPでは、証明書キーが固定されているかどうかに関係なく、すべての接続が許可されます。証明書の検証メソッドから明示的にfalseを返しましたが、接続はまだ許可されています。証明書の検証方法をデバッグしてステップ実行したため、チェックが実行されていると確信しています。 検証チェックからfalseを返しているのに、何が原因で接続が続行されるのですか ServicePointManager.ServerCertificateValidationCallback = ValidateServerCertficate; private static bool ValidateServerCertficate( object sender, X509Certificate certificate, X509Chain chain, SslPolicyErrors sslPolicyErrors ) { return false; }

1
Azure ServiceBus:すべてのサブスクライバーがメッセージを処理するまで待機する
私のシナリオでは、複数の(不明な)サブスクライバーを持つServiceBusトピックを作成する予定です。トピックフィルターを使用できるため、トピックからの各メッセージを処理しません。 すべてのハンドラーがワークフローを続行するための作業を完了するまで、特定のメッセージ(Id)が待機する必要があります。当然、各ハンドラーは完了時にメッセージを生成します。たとえば、Durable Functionを使用してイベントのリストを待つことができます。 しかし、問題は、サブスクリプションメッセージのリストが送信された/送信されることをどのようにして知ることができるかです。 Microsoft.Azure.ServiceBus.Management.ManagementClient.GetSubscriptionsAsync()私は私のトピックのすべてのサブスクリプションのリストを取得することができます。しかし、特定のメッセージを受け取るかどうかをフィルターに従って評価する方法を見つけることができません。 ServiceBusでそれを実現できない場合、この種のシナリオを実装するための代替手段はありますか(Pub / Subのカスタム実装でホイールを再発明する以外に)?
8 c#  .net  azure  servicebus 

2
コンシューマータイプのアプリケーションでDataContextインスタンスをキャッシュする方法は?
プロバイダーが提供するSDKを使用して、簡単に統合できるアプリケーションがあります。このSDKはAMQPエンドポイントに接続し、メッセージをコンシューマーに配信、キャッシュ、および変換するだけです。以前、この統合はデータソースとしてXMLを使用するHTTP経由で行われ、古い統合には、WebリクエストごととマネージスレッドIDごとの2つのDataContextキャッシュ方法がありました。(1) ただし、SDKがすべての接続ロジックを実行し、コンシューマーを定義するだけなので、HTTP経由ではなく、AMQPが透過的になり、「Webリクエストごとに」DataContextをキャッシュするオプションがないため、管理スレッドごとにのみidが残されます。責任パターンのチェーンを実装したので、更新が来ると、DataContextを使用して新しい更新に従ってデータベースを更新するハンドラーの1つのパイプラインに配置されます。パイプラインの呼び出し方法は次のようになります。 public Task Invoke(TInput entity) { object currentInputArgument = entity; for (var i = 0; i < _pipeline.Count; ++i) { var action = _pipeline[i]; if (action.Method.ReturnType.IsSubclassOf(typeof(Task))) { if (action.Method.ReturnType.IsConstructedGenericType) { dynamic tmp = action.DynamicInvoke(currentInputArgument); currentInputArgument = tmp.GetAwaiter().GetResult(); } else { (action.DynamicInvoke(currentInputArgument) as Task).GetAwaiter().GetResult(); } } else { currentInputArgument = …

1
C#foreachの予期しない動作
なぜC#コンパイラはこれをコンパイルして実行時にランタイム例外をスローするのを許可するのですか? class Program { static void Main(string[] args) { IEnumerable<Test> list = new List<Test>() { new Test() }; foreach(IDisposable item in list) { } } } public class Test { } これは、任意のインターフェイスでコンパイルされ、IDisposableを具象クラスで置き換えてもコンパイルされません。
8 c#  covariance 

2
FromSqlRawとEF Core 3.1のストアドプロシージャに含める
だからここに契約があります-私は現在EF Core 3.1を使用していて、エンティティがあるとしましょう: public class Entity { public int Id { get; set; } public int AnotherEntityId { get; set; } public virtual AnotherEntity AnotherEntity { get; set; } } DbSet<Entity> Entities通常の方法でアクセスするときは、次のようなAnotherEntityを含めます。 _context.Entities.Include(e => e.AnotherEntity) そしてこれはうまくいきます。なぜでしょうか?次に私は行きます: _context.Entities.FromSqlRaw("SELECT * FROM Entities").Include(e => e.AnotherEntity) これも機能します。どちらも、AnotherEntityで結合された同じオブジェクトのコレクションを返します。次に、SELECT * FROM EntitiesspGetEntitiesという名前の同じクエリで構成されるストアドプロシージャを使用します。 _context.Entities.FromSqlRaw("spGetEntities") 何だと思う?これも機能します。同じ出力が得られますが、明らかにAnotherEntityに参加していません。ただし、次のようにインクルードを追加しようとすると、 _context.Entities.FromSqlRaw("spGetEntities").Include(e => …

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.