2016-03-23 6 views
1

signalRハブでカスタムエラーログを実装する必要があります。これは、HubPipelineModuleから継承されますと、それはこれが私のハブHubPipelineModule OnIncomingErrorイベントからハブのメソッドを呼び出す

public class FooHub : Hub 
{ 
    public void MethodWithException() 
    { 
     throw new Exception(); 
    } 

    public void FooMethod() 
    { 

    } 
} 

あるこの

GlobalHost.HubPipeline.AddModule(new ErrorModule()); 

のようなスタートアップに登録されるErrorModuleを作成することによって行われ、これが私のモジュールであることができる

public class ErrorModule : HubPipelineModule 
{ 
    protected override void OnIncomingError(ExceptionContext exceptionContext, IHubIncomingInvokerContext invokerContext) 
    { 
     //call foo method on foo hub 

     //log error 
    } 
} 

MethodWithException()が呼び出されます。イベントOnIncomingErrorを呼び出したハブに対してFooMethod()を呼び出すことは可能ですか?あなたがここに完全なコードを見つけることができます

protected override void OnIncomingError(ExceptionContext exceptionContext, 
               IHubIncomingInvokerContext invokerContext) 
     { 
      var hub = (invokerContext.Hub as HubType); // 
      hub.MyMethod("myparam","mysecondparam"); 

      //log something here 
      Debug.WriteLine(exceptionContext.Error.Message); 
     } 

:あなたが行うことができ、ハブの特定のメソッドを呼び出すために

protected override void OnIncomingError(ExceptionContext exceptionContext, 
               IHubIncomingInvokerContext invokerContext) 
     { 
      dynamic caller = invokerContext.Hub.Clients.Caller; 
      caller.ExceptionHandler(exceptionContext.Error.Message); 

      //log something here 
      Debug.WriteLine(exceptionContext.Error.Message); 
     } 

EDIT

:このようなもので

答えて

1
+0

申し訳ありませんが、私はmetho d例外を発生させたハブで定義済み –

+0

ハブインスタンスを取得したい場合は、対応するハブをキャストできます。 –

関連する問題