Ninjectインターセプタの一部として共通のバリデータを記述しました。私の要件は、一貫性のために、私のプロジェクトのサービスメソッドがどのように戻るかのように、レスポンスオブジェクトを返さなければならないということです。応答オブジェクトを返すことで、バリデータが失敗したときに適切な検証メッセージを返すのにも役立ちます。インターセプタではどうしたらいいですか?私は、Intercept()が何も返さないことを理解しました。私は例外を投げてみましたが、どこでそれを捕まえるべきかわかりません。誰か助けてくれますか?Ninjectインターセプタから何かを返す方法
public void Intercept(IInvocation invocation)
{
var validationFails = false;
if (validationFails)
{
// return an object
// response.ErrorMessage = "Validation Error"
// Or throw exception, but where should I catch it
throw new Exception(statusMessage);
}
else
{
invocation.Proceed();
}
}
返信いただきありがとうございます。私もそれを試した。しかし何らかの理由で、私のサービスコールは常に「400 Bad Request」と表示し、何も返さなかった。 – Skip
私はMyServiceMethod()を呼び出し、インターンはビジネスメソッドを呼び、サービスの呼び出しを行っています。サービスプロジェクトに登録されたインターセプタがあり、サービスコールを開始する前にトリガされます。したがって、インターセプタがオブジェクトを返すとき、それは常に '400 Bad Request'です。私のカーソルはまだサービスメソッドに当たっていません。 しかし、インターセプターをビジネスプロジェクトに登録しようとしたところ、インターセプターで設定したものを返すことができました。唯一の違いは、私は今サービスメソッドにヒットし、インターセプタに入り、何かを返すことができたということです。 – Skip
パブリックオブジェクトMyServiceMethod(int param) { \t return BusinessLayer.MyBusinessMethod(int param); } これは私にとっては奇妙なようです。なぜ私は何かを返すことができなかった、サービスメソッドを打つ前に、私はメソッドに入力した後、返すことができます。 soemthingを返すには、それはある方法でなければならないのですか?それは意味をなさないでしょうか?私はここに何かを逃していますか – Skip