2017-06-13 74 views
-3

我有一個C#DLL來查詢數據使用實體框架。之後,我使用owin創建一個rest api來引用dll來獲取數據。我有兩個示例:一個是使用控制檯應用程序訪問數據,並沒有問題。另一個是我把其餘的API放在Windows服務中,然後訪問它。它返回空。我不知道爲什麼。Windows服務訪問LocalDb返回空

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返回空 –