-3
我有一個C#DLL來查詢數據使用實體框架。之後,我使用owin創建一個rest api來引用dll來獲取數據。我有兩個示例:一個是使用控制檯應用程序訪問數據,並沒有問題。另一個是我把其餘的API放在Windows服務中,然後訪問它。它返回空。我不知道爲什麼。Windows服務訪問LocalDb返回空
C#DLL:
我有一個C#DLL來查詢數據使用實體框架。之後,我使用owin創建一個rest api來引用dll來獲取數據。我有兩個示例:一個是使用控制檯應用程序訪問數據,並沒有問題。另一個是我把其餘的API放在Windows服務中,然後訪問它。它返回空。我不知道爲什麼。Windows服務訪問LocalDb返回空
C#DLL:
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();
}
}
對於控制檯應用程序和windowservice,我創建一個httprequest來訪問數據,控制檯應用程序很好地返回,但windowservice返回空 –
可能會添加一些代碼,以便我們可以看到您嘗試過什麼? –