【发布时间】:2014-07-23 07:27:24
【问题描述】:
红色的“NetworkError:...”消息来自 PUT 和 DELETE 请求。任何人都有任何直接的想法为什么会这样?我的 web.config 已经为 CORS 配置了,如下所示:
<httpProtocol>
<customHeaders>
<remove name="X-Powered-By" />
<add name="Access-Control-Allow-Origin" value="*" />
<add name="Access-Control-Allow-Headers" value="Content-Type" />
<add name="Access-Control-Allow-Methods" value="GET, POST, PUT, DELETE, OPTIONS" />
</customHeaders>
</httpProtocol>
我的 Web API 控制器,使用实体框架和 MSSQL:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Net.Http;
using System.Web.Http;
using System.Web.Http.Cors;
namespace CarsoWebApiTraining.Controllers
{
[EnableCors("*", "*", "*")]
public class StudentController : ApiController
{
GeneralEntities entity = new GeneralEntities();
StudentController()
{
entity.Configuration.LazyLoadingEnabled = false;
}
// GET: api/Student
public IEnumerable<Student> Get()
{
return entity.Students;
}
// GET: api/Student/5
public Student Get(int id)
{
try
{
entity.Students.Where(p => p.StudentID == id).FirstOrDefault();
}
catch
{
}
return entity.Students.Where(p => p.StudentID == id).FirstOrDefault();
}
// POST: api/Student
public void Post([FromBody]Student student)
{
entity.Students.Add(student);
entity.SaveChanges();
}
// PUT: api/Student/5
public void Put(int id, [FromBody]Student student)
{
Student selectedStudent = Get(id);
selectedStudent.Name = student.Name;
selectedStudent.ICNo = student.ICNo;
entity.SaveChanges();
}
// DELETE: api/Student/5
public void Delete(int id)
{
entity.Students.Remove(Get(id));
entity.SaveChanges();
}
}
}
【问题讨论】:
-
向我们展示您的 Web api 控制器
-
您是否使用 IIS 作为 Web 服务器?如果是这样,请确保未安装 WebDAV Publishing。为此:Windows 功能 > Internet 信息服务 > 万维网服务 > 通用 HTTP 功能 > WebDAV 发布
-
@CharlesOuellet 或者删除 web.config 文件中的 WebDav 处理程序。
标签: jquery ajax asp.net-web-api cors