从Controller

时间:2017-04-12 09:35:34

标签: c# asp.net-web-api2 self-hosting

我正在尝试将webapi(owin.selfhosting)支持添加到现有的C#控制台应用程序,我遇到了来自控制器的回调问题。基本上我需要调用一个函数作为对http请求的反应。 我认为代表/活动是可能的,但到目前为止还没有成功

更新

使用静态事件似乎有效,我使用了此视频(https://www.youtube.com/watch?v=jQgwEsJISy0)中描述的标准模式,并在事件声明之前添加了静态关键字。但是将静态委托与非静态用户混合可能不是最好的做法。

代码示例:

//appcontroller.cs
  public class AppController : ApiController
  {  public delegate void EventHandler(object source, EventArgs args);
     public static  event EventHandler EventRecived;

     protected virtual void OnEventRecived(string arg)
     {
         if( EventRecived != null)
         {
            EventRecived(this, arg);
         }
     }

     [Route("api/{arg}")]
     public void GetFoo(string arg)
     {
        /*   
         *   
         */
         OnEventRecived(); 

      }
  }

//program.cs 
 class Program
 { static void Main(string[] args)
   {  WebApp.Start<Startup>(url: baseAddress); 
      SomeClass obj = new SomeClass();
      AppController.EventHandler+=obj.OnRecivedEvent;

      while (true)
      {  //do work
      }
    }
  }

  class SomeClass
  {  public SomeClass() {}
     public void OnRecivedEvent(object sender, EventArgs e)
     {  
        Foo(e); 
     }
     public void Foo(string arg)
     {
       //do something
       Console.WriteLine("request of "+arg);
     }
  }

http://localhost:8080/api/holy_grail

的http get请求示例
  Console output >>request of holy_grail

0 个答案:

没有答案