問題タブ [servicestack]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
757 参照

c# - ServiceStack-単一のRestserviceですべてのDTOリソースを継承します

1つのサービスですべてのDTOリソースを継承する方法は?

たとえば、

私はリソースクラスを持っています:

私は自分のサービスクラスを持っています:1。このサービスで別のDTOクラスを継承する方法???????? 2.このために別のクラスを作成する必要がありますか?????

この問題について私に提案してください.......

0 投票する
3 に答える
4453 参照

asp.net - ASP.NET HttpHandler 応答キャッシュの無効化

バックグラウンド

IIS 7 で実行されている NancyFx と ServiceStack.NET のパフォーマンスを比較している最中です (Windows 7 ホストでのテスト)。どちらも非常に高速です。各フレームワークをローカルでテストすると、毎秒 10,000 以上のリクエストが処理され、ServiceStack は約 20% 高速です。

私が直面している問題は、ASP.NET が HttpHandler からの一意の URI 要求ごとの応答をキャッシュしているように見え、すぐに大量のメモリ負荷 (3 GB 以上) が発生し、ガベージ コレクターが過負荷になることです (約 25% の時間が消費されます)。 GC)。これまでのところ、オブジェクトのキャッシングとビルドアップを無効にすることができませんでした。この動作を無効にする方法についての提案を探しています。

詳細

リクエストループは基本的に次のとおりです。

応答は、{ UserID: n } の形式の単純な JSON オブジェクトです。

私はWinDBGを開いてクラックしました。リクエストごとに次のものがあります。

  • 1System.Web.FileChangeEventHandler
  • System.Web.Configuration.MapPathCacheInfos
  • System.Web.CachedPathDatas
  • System.Web.Caching.CacheDependencys
  • System.Web.Caching.CacheEntrys

明らかに、これらのキャッシュ アイテムが原因で、キャッシュの肥大化の問題であると思われます (150,000 個の使用できないオブジェクトを取り除きたいです!)。

これまでに試したこと

  • IIS の「HTTP 応答ヘッダー」で、「Web コンテンツの期限切れ」を「即時」に設定します。
  • web.config で

    /li>
  • また、web.config (およびポリシーのさまざまなバリエーション (なしを含む)) にも含まれます。

    /li>
  • フレームワークのソース コードを調べて、ASP.NET キャッシュを使用する "機能" が組み込まれているかどうかを確認しました。キャッシュ ヘルパーはありますが、フレームワーク自体に限定されており、ASP.NET キャッシュを利用していないようです。

更新 #1

リフレクターを調べてみると、 の値UrlMetadataSlidingExpirationをゼロに設定すると、スループットが 50% 低下する代わりに、過剰なメモリ使用量の大部分が解消されることがわかりました (FileAuthorizationModule クラスは FileSecurityDescriptors をキャッシュします。UrlMetadataSlidingExpirationは非ゼロです)。

これを行うには、web.config を更新し、以下を に配置します。

可能であれば、FileAuthorizationModule の実行を完全に無効にして、それが役立つかどうかを確認します。ただし、ASP.NET は依然として 2*NMapPathCacheInfoおよびCacheEntryオブジェクトを生成しているため、メモリは依然として消費されていますが、その速度ははるかに遅くなります。

アップデート #2

問題の残りの半分は、ここで説明されているのと同じ問題です: Prevent many different MVC URLs from fill ASP.NET Cache . 設定

<cache percentagePhysicalMemoryUsedLimit="1" privateBytesPollTime="00:00:01"/> 役に立ちますが、これらの非常に積極的な設定でも、メモリ使用量はすぐに 2.5GB に上昇します (4GB と比較して)。これらのオブジェクトが最初から作成されないことが理想的です。それができない場合は、リフレクションを使用してキャッシュをクリアするというハックな解決策に頼るかもしれません (これらのエントリはすべて「プライベート」であり、パブリック キャッシュを反復処理するときに列挙されません)。

0 投票する
1 に答える
3214 参照

c# - ServiceStack JsonSerializer を使用して ExpandoObject をシリアル化する方法は?

ServiceStack JsonSerializer を取得して、ExpandoObject を辞書ではなくフラット オブジェクトとしてシリアル化することは可能ですか? おおよそこれに近いもの:

ExpandoObject3 つの異なるシステム (.NET BCL JavaScriptSerializer、Newtonsoft JSON.NET、および ServiceStack の JSON オファリング) を使用して JSON シリアル化を比較しようとしています。

かなり単純な動的オブジェクトから始めます。

シリアライザーが ExpandoObject を として扱う方が簡単に思えIDictionary<string, object>ます。BCL と ServiceStack はどちらもこの方法で開始されますが、結果はかなり異なるルートになります。

一般的なクラスがシリアル化されるように、ExpandoObject をコードで組み立てる際に、さらにシリアル化することをお勧めします。の BCL システムにオーバーライド JavaScript シリアライザーを追加できIDictionary<string, object>ます。これは、実際にそのようにとどまる必要がある を持っていないと仮定すると、うまく機能しIDictionary<string, object>ます(私はまだ持っていません)。

残念ながら、ServiceStack の JsonSerializer が ExpandoObject を同じ方法で処理できるようにする方法がまだ必要です。これを可能にするために ServiceStack システムに接続するにはどうすればよいですか?

更新:私の用途ではオプションではありませんが、ServiceStack は匿名オブジェクトを問題なく処理しているようです。

0 投票する
2 に答える
1541 参照

web-services - ServiceStackWebサービスの文書化

ServiceStackベースのWebサービスを文書化するためのオプションは何ですか。1行の文字列については話していません。

詳細(長くなる可能性があります)、戻り値の種類、考えられるHTTP応答、詳細な例の追加などを文書化できるようにしたいと思います。

ServiceStackでこれをサポートしていますか(見つかりませんでした)?誰かが他の方法で問題を解決していない場合。

0 投票する
3 に答える
23772 参照

c# - ServiceStack.Text クラスを JSON にシリアル化する方法

ASP.NET で使用する ServiceStack.Text をダウンロードしました。多くのプロパティを持つクラスがあり、そのうちの 5 つ (文字列、整数、バイナリ) を JSON にシリアル化したいと考えています。クラスから JSON オブジェクトを作成する方法の簡単な例を投稿できますか?

0 投票する
5 に答える
5672 参照

c# - Service Stack Hello Worldチュートリアル:例外EndpointHost.Configがnull

http://www.servicestack.net/ServiceStack.Hello/のサービススタック「HelloWorld」チュートリアルに従っています。しかし、asp.netアプリケーションを起動しようとすると、「値をnullにすることはできません。パラメーター名:EndpointHost.Config」と表示されます。

完全な例外テキストは次のとおりです。

私のグローバルクラスは次のとおりです。

しかし、それは決して呼ばれないようです。ホームページからサンプルプロジェクトをコンパイルすることは問題なく機能しますが、ホームページからの例に従いたいと思います。この問題を解決する方法はありますか?

0 投票する
1 に答える
576 参照

web-services - ServiceStack クライアントから SOAP を介して公開された Java CXF WS を使用する

コンテキスト: ServiceStack を使用して SOAP クライアントを構築し、定義済みの WSDL を使用して SOAP で公開されている既存の Java CXF WebService を使用したいと考えています (WS 自体を制御することはできません)。認証のために、SOAP エンベロープにヘッダーをいくつか追加する必要がある場合があります。

質問: 上記のすべてが可能でしょうか?可能である場合、落とし穴は何ですか? 具体的な例があれば、リンクを歓迎します。

0 投票する
2 に答える
2609 参照

c# - ServiceStack.Text シリアライゼーション例外 (メソッド 'Void set_Item(Int32, MyApp.MyClass)' の呼び出しに指定された引数の数が正しくありません)

ServiceStack.Text を使用して、ネストされたクラスのリストを含むオブジェクトを逆シリアル化しようとしています。

シリアル化はうまくいきましたが、逆シリアル化しようとすると、次のエラーが発生します。

System.TypeInitializationException: 'ServiceStack.Text.Jsv.JsvReader 1' threw an exception. ---> System.TypeInitializationException: The type initializer for 'ServiceStack.Text.Jsv.JsvReader1' の型初期化子が例外をスローしました。---> System.TypeInitializationException: 'ServiceStack.Text.Common.DeserializeList 2' threw an exception. ---> System.TypeInitializationException: The type initializer for 'ServiceStack.Text.Jsv.JsvReader1' の型初期化子が例外をスローしました。---> System.TypeInitializationException: 'ServiceStack.Text.Jsv.JsvReader 1' threw an exception. ---> System.TypeInitializationException: The type initializer for 'ServiceStack.Text.Common.DeserializeList2' の型初期化子が例外をスローしました。---> System.TypeInitializationException: 'ServiceStack.Text.Jsv.JsvReader`1' の型初期化子が例外をスローしました。---> System.ArgumentException: メソッド 'Void set_Item(Int32, MyApp.MyClass)' の呼び出しに指定された引数の数が正しくありません

私のソリューションには set_Item という名前のメソッドがありません。また、ServiceStack.Text アセンブリ (リフレクターを使用) でこのような名前のメソッドを見つけることもできません。問題が何であるかはわかりません...そして、高速なシリアル化タイプが必要ですが、私が知っている最速のもの(protobuf-net)はネストされたリストをサポートしていません。

何か案は?問題の原因となったクラスは次のとおりです (protobuf メソッドをテストしたため、protomembers が存在します)。


0 投票する
1 に答える
1857 参照

c# - ServiceStack.Netでクライアント認証を実装する方法

servicestack.netライブラリを使用してWebサービスを開発しています。

私のシナリオでは、WebサービスはWPFアプリケーションから呼び出されます。承認されたクライアントアプリのみが自分のサービスを呼び出していることを認証する機能が必要です。

これは、クライアントアプリケーションで「ユーザー名」と「パスワード」をハードコーディングするのと同じくらい簡単ですか?これは確かに適切なアプローチのようには思えません。もっと良い方法はありますか?

編集 さらに、クライアント側では、ユーザー自身がユーザー名/パスワードを使用してログインし、サービスへのリクエストを開始できます(これが何かに影響するかどうかはわかりませんので、言及したいと思います)、

0 投票する
3 に答える
932 参照

c# - ソリューションに複数のIoCコンテナがあることに問題がありますか?

ASP.NETMVCフロントエンドとServiceStack.NETWebサービスを使用してマルチレイヤーアプリを構築しています。

プロジェクトの開始時に、DIにNinjectを使い始めました。ServiceStackをミックスに追加しているので、将来の問題の可能性があるかどうか知りたいです。

ServiceStackライブラリは、デフォルトでIoCコンテナとしてFunqを使用します。すべてが正常に機能しているように見えますが、同じアプリケーションに2つのIoCコンテナーがあると問題が発生するのではないかと思います。