問題タブ [servicestack-bsd]

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 に答える
129 参照

servicestack-bsd - 応答エンコーディングを変更するには?

デフォルトでは、ServiceStack サービスは json 応答を UTF-8 エンコーディングで返します。それをASCIIに変更するには?これは難しくないと思いますが、やり方がわかりません。

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

c# - ServiceStack.Redis を使用した大量シナリオでの予期しない応答

私の問題はこれと非常に似ています:プロトコルエラー、「データがありません」エラー、大量のシナリオでservicestack.redisを使用している間の「ゼロ長の応答」エラー

IIS で動作する C# Web アプリケーションで ServiceStack v3.9.54.0 を使用しています。Redis バージョン 2.8.17 と 3.0.501 の両方でエラーを確認できました。

私が受け取ったエラーは次のとおりです。

と:

最初に考えたのは、複数のスレッド間で Redis 接続を共有しているということでしたが、PooledRedisClientManager(Configsは接続情報を格納する静的クラスです)のシングルトン実装に問題は見られません。

すべてのクライアントは、次のようにプールを通じて取得されます。

var が複数のスレッド間で共有されていないと確信しておりredis、私が見る限り、このコードは適切なスレッドセーフな実装を示しています...

どんな助けでも大歓迎です。


編集:私が使用しているいくつかのテクノロジによると、アプリのスタートアップ コードにアクセスすることも、usingブロックを使用することもできません。したがって、すべてのクライアントを次のようにラップします。

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

nuget - ServiceStack v3 ライブラリは Nuget から削除されましたか?

ServiceStack.ClientNugetの V3 バージョンを入手する方法を知っている人はいますか? この wiki ページは、それらが存在する必要があることを示唆しているようです: https://github.com/ServiceStackV3/ServiceStackV3

従来の v3 ServiceStack 実装と対話するために、新しいプロジェクトを作成する必要があります。既存の API をアップグレードできませんがJsonServiceClient、新しい v4 には互換性がありません。コントラクト DLL をレガシー API からインポートしたため、非互換性の問題が発生しています。

正確なエラーは次のとおりです。

エラー 105 タイプ 'ServiceStack.ServiceHost.IReturn' は、参照されていないアセンブリで定義されています。アセンブリ 'ServiceStack.Interfaces, Version=3.9.48.0, Culture=neutral, PublicKeyToken=null' への参照を追加する必要があります。D:\Projects\Adactus.Pulse\Main\Solutions\Integration\Mulesoft\SupplierIntegration\ScmtProcessor\InitialInstructionProcessor.cs 231 17 ScmtProcessor

たまたま別の nuget パッケージ名 (つまり、BSD バージョン) に移動されましたか? それとも、手動で DLL 参照のコピーを開始する必要がありますか?

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

c# - ServiceStack のカスタム ServiceRunner の HandleException で responseDTO タイプにアクセスする

カスタム ServiceRunner を作成し、HandleException メソッドをオーバーライドしました。ご覧のとおり、サービス内で未処理の例外が発生した場合、HandleException メソッドによって返されるオブジェクトがサービスの応答になります。成功した場合にサービスが返すのと同じ responseDTO タイプを返したいと考えています。例外が発生したサービスの responseDTO タイプである HandleException 内にアクセスする方法はありますか?

編集:受け取った回答に従って、次のように定義されたDTO /サービスタイプでサービス(F#にあります)を実装しました:

したがって、HandleException で受け取ると予想される型は次のとおりですOp<list<Y>,list<E>> (Y と E は、bin フォルダーで利用可能な dll で定義されている既知の型です)

提案に従って、WebRequestUtils が両方の名前空間で利用可能だったので、次の 2 つのオプションを試しました。

test1 の場合、次の例外を受け取ります。

スタックトレース:

test2 の呼び出しは成功しましたがErrorResponse、 expected ではなく戻り値として typeを受け取りましたOp<list<Y>,list<E>>

私はまだ何かを見逃していますか?

0 投票する
0 に答える
222 参照

.net - ServiceStack.Redis デシリアライゼーションの問題 - JSON が破損する場合がある

オブジェクト (JSON でシリアル化) を格納するために ServiceStack.Redis を使用するサービスを取得しました。HTTP リクエストごとに更新されるキーがあります。フローは単純です。キーの値を取得し、リストに逆シリアル化し、項目を追加/削除し、変更されたリストを Redis に書き戻します。
最近、問題に気付きました - 一部のキーが破損します (そのため、デシリアライズできません)。どうしてか分かりません。
例外は言うType definitions should start with a '{', expecting seralized type X, got string starting with: Y at ServiceStack.Text.Common.DeserializeTypeRefJson.StringToType(Type type, String strType, EmptyCtorDelegate ctorFn, Dictionary'2 typeAccessorMap
私は他の回答を読みました-それらのほとんどは、別のコンピューターからJSONデータを取得するか、それがどのように構築されたかを制御できないことを意味します. でもやるよ。
ほとんどのプロパティは単純な int で、その他は DateTime です。
私が持っている理論は 1 つだけです。マルチスレッドが関係しています。ただし、その場合は「last-write-wins」にする必要があり、破損は発生しません。他の誰かがその行動を見ましたか?
Redis 2.8.9 で ServiceStack 3.9.71 (3.x シリーズの最新リリース) を使用しています。.NET 4.5 Web アプリケーションは Windows でホストされ、Redis サーバーは Linux でホストされています。

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

c# - ServiceStack 3 で単一サービスとしての JSON 日付シリアル化形式を変更するにはどうすればよいですか?

JSON のデフォルトの日付シリアル化形式を使用する ServiceStack 3 ベースのミドルウェア アプリケーションに多数のレガシー サービスがあります。問題は、これがデバッグ用に人間が判読できないことです。

ISO8061 形式でできる、人間が読める日付を持つようにテストされている新しいサービスが欲しいです。

ServiceStack 3 の場合、単一のサービスまたはサービスごとの JSON 日付シリアル化形式を変更するにはどうすればよいですか? すべてのレガシー サービスのコンシューマーを新しい日付形式で再検証する必要はありません。

....

注: ServiceStack 4 の回答を見つけましたが、HttpResult で ResponseScope を作成するオプションは ServiceStack 3 には存在しないようです。

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

redis - ServiceStack.Redis v3 と複数のホスト - 推奨されるアーキテクチャ

の複数のインスタンスがRedisMqServer互いにつまずくという問題が発生しています。1 つのサーバーを停止すると、他のサーバーが停止します。これを実装した方法は明らかに間違っていますがRedisMqServer、この状況でどのように使用するべきかを特定できません。

当社のインフラストラクチャは次のもので構成されています。

  • マスター/スレーブ構成の 2 つの Redis サーバー
  • 負荷分散された 2 つの API インスタンス (以下「API A」と呼びます)
  • 負荷分散された 2 つの API インスタンス (以下「API B」と呼びます)

API A と B は、ServiceStack.Redis を使用RedisMqServerして同期メッセージと非同期メッセージの両方を相互に送信する 2 つの独立したアプリケーションです。ServiceStack のオープン ソース v3 リビジョンを使用しています。

RedisMqServer非同期通信は双方向で行われるため、両方の API が構成されています。

RedisMqServerが破棄されると、チャネルでメッセージが送信されますSTOPmq:topic:inその結果、サーバーはすべてのチャネルからサブスクライブを解除し、要求の処理を停止します。

ただし、このチャネルは API A と API B の両方で使用されているため、どちらかを停止するともう一方も停止します。

のインスタンスごとに単一の Redis サーバー インスタンスを使用することになっていますRedisMqServerか?

各 API は、常に単一の Redis サーバーにのみ接続していることに注意してください。スレーブ サーバーは、マスターが使用できなくなった場合にのみ接続されます。