我试图通过将OData控制器托管在本地IIS上来从DB获取数据。 但是,我得到本地主机无法处理此请求。 HTTP 500错误。 我尝试在控制器中对值进行硬编码,这可以正常工作,但不能通过DB。通过VS 2017 IIS Express,数据可以正常运行。因此,与数据库的连接很好。要知道的重要一点是,如果它们从数据库中获取数据,则所有控制器都无法正常工作,因此,此问题似乎更多与某些IIS设置有关,该设置阻止了数据库连接。
请帮助我解决无法从DB提取数据的问题。以下是我的Instruments控制器的代码段:
public class InstrumentsController : ODataController
{
private tdpcontext db = new tdpcontext();
[HttpGet]
[EnableQuery]
public IQueryable<Instruments> Get()
{
var db = new tdpcontext();
IQueryable<Instruments> result = db.Instruments.AsQueryable();
return result;
}
// POST: odata/Test
public IActionResult Post([FromBody] Instruments Instrument)
{
HttpContext.GetType();
if (!ModelState.IsValid)
{
return BadRequest(Instrument);
}
db.Instruments.Add(Instrument);
db.SaveChanges();
return Created(Instrument);
}
// PATCH: odata/Test(5)
[AcceptVerbs("PATCH", "MERGE")]
public IActionResult Patch([FromODataUri] string key, Delta<Instruments> patch)
{
if (!ModelState.IsValid)
{
return BadRequest(ModelState);
}
Instruments Instruments = db.Instruments.Find(key);
if (Instruments == null)
{
return NotFound();
}
patch.Patch(Instruments);
try
{
db.SaveChanges();
}
catch (Microsoft.EntityFrameworkCore.DbUpdateConcurrencyException)
{
if (true)
{
return NotFound();
}
else
{
throw;
}
}
return Updated(Instruments);
}
public IActionResult Put([FromBody] Instruments Instrument)
{
if (!ModelState.IsValid)
{
return BadRequest(Instrument);
}
//db.Instruments.Add(Instrument);
//db.SaveChanges();
return Created(Instrument);
}
public IActionResult Delete(string key , Instruments Instrument)
{
Instruments ObjInstrument = db.Instruments.Find(Instrument);
if (ObjInstrument == null)
{
return NotFound();
}
db.Instruments.Remove(ObjInstrument);
db.SaveChanges();
return Updated(Instrument);
}
[HttpPost]
[Route ("odata/Instruments/DeleteData")]
public IActionResult Delete([FromBody] Instruments Instrument)
{
return BadRequest(Instrument);
}