网页显示:localhost无法处理此请求。 HTTP 500错误

时间:2018-11-19 05:22:20

标签: controller odata

我试图通过将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);
    }

0 个答案:

没有答案