【发布时间】:2017-07-09 23:12:57
【问题描述】:
Ahoy Coder 朋友。
在这个问题Angular 2 + web api 之后,我想到我可能必须为我的前端启用 CORS 才能访问我的后端 Web api。
但是,即使我尝试了这些步骤 http://www.infragistics.com/community/blogs/dhananjay_kumar/archive/2015/08/31/how-to-enable-cors-in-the-asp-net-web-api.aspx 以及这些 https://enable-cors.org/server_aspnet.html ,显然没有任何改变:当我尝试使用邮递员到达 http://localhost:58825/api/character 时,我收到了预期的字符列表,但没有 CORS答案中的标题(允许来源等)。 至于前端,您可能会在链接的问题中看到 Angular 甚至找不到 API。
这里是 web.config 的相关示例:
public static void Register(HttpConfiguration config)
{
// Web API configuration and services
config.Formatters.JsonFormatter.SupportedMediaTypes.Add(new MediaTypeHeaderValue("text/html"));
var cors = new EnableCorsAttribute("http://localhost:3000", "*", "*");
config.EnableCors(cors);
还有控制器:
public class CharacterController : ApiController
{
private readonly CharacterRepository repo = new CharacterRepository();
JavaScriptSerializer jsonConverter = new JavaScriptSerializer();
[EnableCors(origins:"http://localhost:3000", headers:"*", methods:"*")]
// GET: api/Character
public IEnumerable<string> GetAll()
{
List<Character> myCharacs = repo.Get().ToList();
List<String> myJsonCharacs = new List<string>();
foreach (var charac in myCharacs)
{
var cur = jsonConverter.Serialize(charac);
myJsonCharacs.Add(cur);
}
return myJsonCharacs;
//return myCharacs;
}
显然,我添加了 nuget 包 Microsoft.AspNet.WebApi.Cors (5.2.2)。
我尝试清理解决方案、重建、重新启动 VS...我已经查看了此处在 SO 上提出的“类似问题”,但我什至没有“无标题”异常,我的请求似乎通过了没有给出关于 CORS 的 f*ck。
我的前端应用程序位于 localhost:3000,我的 api 位于 localhost:58225(我通过 Visual Studio 启动它,如果这有任何改变)
有人知道我在什么方面失败了吗? (生活除外,这不是问题,我已经习惯了)
编辑:Asp.Net WebApi2 Enable CORS not working with AspNet.WebApi.Cors 5.2.3 的可能加倍
重新编辑:我不知道它是否是真正的 doublon,但我设法通过添加解决了我的问题
add name="ExtensionlessUrlHandler-Integrated-4.0" path="*."
verb="GET,HEAD,POST,PUT,DELETE"
type="System.Web.Handlers.TransferRequestHandler"
preCondition="integratedMode,runtimeVersionv4.0" /
到我的 webconfig 文件,如原始帖子中所述,我现在在邮递员中看到了标题。
【问题讨论】:
标签: cors asp.net-web-api2