問題タブ [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.
servicestack - ServiceStack 3 の最近のバージョンにビルドの問題はありますか?
ServiceStack 3.9.71.0 を使用してプロジェクトをコンパイルすると、Visual Studio で次の警告が表示されました (最近のリリースにも影響があるようです)。以前に表示されなかった理由はわかりませんが、メイン プロジェクトを参照し、両方が同じサービス スタック DLL への参照を持つテスト ライブラリを作成した後、表示され始めました。
警告 2 同じ依存アセンブリの異なるバージョン間に解決できない競合が見つかりました。ログの詳細度が詳細に設定されている場合、これらの参照競合はビルド ログにリストされます。C:\Program Files (x86)\MSBuild\12.0\bin\Microsoft.Common.CurrentVersion.targets 1635
ビルド ログを調べると、次のように表示されます。
10> 「ServiceStack.Interfaces, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null」と「ServiceStack.Interfaces, Version=3.9.60.0, Culture=neutral, PublicKeyToken=null」の間に競合がありました。10> 「ServiceStack.Interfaces、Version=1.0.0.0、Culture=neutral、PublicKeyToken=null」が選択されたのは、それがプライマリであり、「ServiceStack.Interfaces、Version=3.9.60.0、Culture=neutral、PublicKeyToken=null」が選択されていないためです。10> 「ServiceStack.Interfaces, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null」に依存する参照 [C:\proj\packages\ServiceStack.Common.3.9.71\lib\net35\ServiceStack.Interfaces.dll ] ...
古いバージョンの ORMLite に加えて、NuGet の最新リリースによってServiceStack.Interfaces の古いバージョン ( http://i.imgur.com/4vw3069.jpg )が参照されているように見えるため、このエラーは正しいです。以前のバージョンの ServiceStack をすべてシステムから削除したので、古い DLL は検出されません。私のプロジェクトには、ServiceStack、共通、インターフェース、およびテキストへの参照しかありません。私はORMを使用していないので削除しましたが、両方のプロジェクトに追加しても役に立ちませんでした。
Github が 3.9.60 以降更新されていないように見えるため、このエラーを解決する方法が少しわかりません。何かアイデアはありますか?
c# - RequestFilter Validation はクライアント依存ですか?
を介して参照サービスをインスタンス化するときに、リクエスト フィルター検証 (例: FluentValidation ) がトリガーされることを期待する必要がありますか?AppHostBase.ResolveService<>
これまでのところ、型指定されたクライアント(この場合は具体的にはJsonServiceClient )を使用した場合に、C# アプリケーションに対して適切なエラー応答を受け取ることができただけです。
servicestack - 自己ホスト型 ServiceStack 3.x サービスによる冗長性
ServiceStack 3.x でセルフホステッド AppService を実行しています
マスターとして実行されている現在のサービスに障害が発生した場合に、クライアントに自動フェイルオーバー メカニズムが必要です。
現時点でのクライアントは、デフォルトの SS JSONClient を使用する厳密に型指定された C# ですが、将来的には Web ベースのクライアント (AngularJS) を追加する予定です。
どのようにそれを行うことができるか、誰かが考えを持っていますか?
servicestack - Entity Framework の Single/SingleOrDefault に相当する ServiceStack.OrmLite
現在、ServiceStack の OrmLite ライブラリを使用している場合、単一のエンティティを選択したい場合は、次のようにします。
ただし、Singleの方が正確であるため(明らかに、同じIDを持つ複数のユーザーがデータベースに到達した場合に例外をスローしたい)、使用できるオーバーロードがあるかどうか疑問に思っていました。現在、db.Single を実行すると、手動フィルタリングでそのオーバーロードが発生します。
c# - ServiceStack: タイプが抽象の場合、リクエスト DTO のプロパティが null になる
ServiceStack 3 ベースのクライアント サーバー アーキテクチャを使用しています。リクエスト DTO に抽象型のプロパティが含まれ、それを実装する 2 つの異なる具象クラスを持つサービスを作成しようとしています。抽象型は、抽象クラスまたはインターフェースのいずれかです。ただし、どちらの場合も、サーバーはプロパティで null オブジェクトを受け取ります。
3 つのアセンブリと対応する名前空間があります: TestClient
、Server
、およびCommonLib
クライアントとサーバーの両方によって参照されます。
つまり、次の 3 つのアセンブリに分散されます。
Context
のプロパティをの代わりにGetThing
タイプに変更すると、これは機能します。インターフェイスのままにするか、抽象クラスに変更すると、データは として送信されます。This
IThisOrThat
IThisOrThat
null
これはシリアル化の問題だと思います。インターフェースを抽象クラスに変更し、適切な属性で装飾しようとしましたKnownType
が、ServiceStack のシリアライザーはこの恩恵を受けていないようです。これを行うためのトリックはありますか?
c# - ServiceStack はすべての要求/応答 DTO を反復します
ルートで設定されたすべてのリクエスト/レスポンス DTO を反復処理するにはどうすればよいですか?
たとえば、次のようなルートです。
および次のような応答 DTO:
すべてのセットアップ ルートを反復処理し、次のものを取得できるサービス アクションが必要です。
- リクエストURL
- クラス名
- リクエストのプロパティ
- 応答 DTO プロパティ
これを行う方法で組み込まれた Servicestack はありますか?
最後に、これを使用して ExtJS ストア/モデルを自動生成したいと思います。また、より良い/代替アプローチにも興味があります。
編集:
これが私が思いついた解決策です:要旨
/extjs/javascript
ルート上でサービスは extjs ストア/モデルを返し、ルート上で/extjs/metadata
サービスはストア/モデル フォルダを含む zip ファイルを返し、新しく作成された Sencha Architect プロジェクトにドロップできます。テンプレートは、Architect v. 3.0.1.1343 が生成するものに基づいています。
これは、次のように装飾されたルートを想定しています。
現在の実装は、要求/応答 DTO の単純なプロパティに対してのみ機能します。改善の余地あり…
c# - ServiceStack が空のリクエスト パラメータ値を null としてデシリアライズするのを防ぐにはどうすればよいですか?
私は非常に単純なServiceStackサービスを持っておりJSONServiceClient
、C#型のAPIを介して呼び出しています。
ただし、Request
params に空の引数がある場合、ServiceStack はこれを null 値に逆シリアル化します。私が見たところ、JSVでは設計によるようですが、JSONではnull以外の値をそのまま保持する必要があります。次の2つの設定も設定しましGlobal.asax.cs
たが、改善はありません。
ServiceStack バージョン 3.9.69 と IIS バージョン 8.0 を使用しています。