2017-06-13 6 views
-3

私はEntity Frameworkを使用してデータを照会するC#dllを持っています。その後、データを取得するためにdllを参照するための残りのAPIを作成するために、owinを使用します。私は2つのサンプルを持っています:1つは、データにアクセスするためのコンソールアプリケーションを使用しています、それは大丈夫です。もう1つは、残りのAPIをWindowsサービスの中に入れてアクセスすることです。空を返します。どうしてか分かりません。LocalDbにアクセスするWindowsサービスが空に戻ります

C#のDLL:

+0

多分あなたが試したことを見ることができるようにいくつかのコードを追加しますか? –

答えて

0

EFのDLL:

public class DemoContext:DbContext 
{ 
    private static DemoContext _instance; 
    public DemoContext() : base("MyDemoConnection") 
    { 
     Database.SetInitializer(new MigrateDatabaseToLatestVersion<DemoContext, Configuration>()); 
    } 

    public static DemoContext Instance 
    { 
     get 
     { 
      if (_instance == null) 
      { 
       _instance = new DemoContext(); 
      } 
      return _instance; 
     } 
    } 

    public DbSet<Student> Students { get; set; } 

    public DbSet<Teacher> Teachers { get; set; } 
} 

owin API:

public class Startup 
{ 
    public void Configuration(IAppBuilder appBuilder) 
    { 
     // Configure Web API for self-host. 
     HttpConfiguration config = new HttpConfiguration(); 
     config.Routes.MapHttpRoute(
      name: "DefaultApi", 
      routeTemplate: "api/{controller}/{id}", 
      defaults: new { id = RouteParameter.Optional } 
     ); 

     appBuilder.UseWebApi(config); 
    } 
} 
public class TeachersController : ApiController 
{ 

    [HttpGet] 
    [Route("api/teachers")] 
    public HttpResponseMessage Get() 
    { 
     try 
     { 
      var _context = DemoContext.Instance; 
      var teachers = _context.Teachers.ToList(); 
      var response = Request.CreateResponse(HttpStatusCode.OK, teachers); 
      return response; 
     } 
     catch (Exception ex) 
     { 
      return Request.CreateResponse(HttpStatusCode.OK, ex.Message); 
     } 

    } 
} 

コンソールアプリケーション:

class Program 
{ 
    static void Main(string[] args) 
    { 
     string baseAddress = "http://localhost:9000/"; 

     // Start OWIN host 
     using (WebApp.Start<Startup>(url: baseAddress)) 
     { 
      // Create HttpCient and make a request to api/values 
/*    HttpClient client = new HttpClient(); 
      client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json")); 
      var response = client.GetAsync(baseAddress + "api/values").Result; 
      var result = response.Content.ReadAsStringAsync().Result; 
      Console.WriteLine(result);*/ 
      Console.ReadLine(); 
     } 
    } 
} 

windowservice:

public partial class HostOwin : ServiceBase 
{ 
    private IDisposable owin; 
    public HostOwin() 
    { 
     InitializeComponent(); 
    } 

    protected override void OnStart(string[] args) 
    { 
     string baseAddress = "http://localhost:9000/"; 
     owin = WebApp.Start<Startup>(url: baseAddress); 

    } 

    protected override void OnStop() 
    { 
     owin.Dispose(); 
    } 
} 
+0

コンソールアプリケーションとwindowserviceの両方で、データにアクセスするためのhttprequestを作成し、コンソールアプリケーションは正常に戻りますが、windowserviceは空に戻ります –

関連する問題