从.net核心应用程序调用时找不到web api路径
问题描述:
这是我的控制器 - 使用webApi框架4.6.1。它正确注册,但是当我从我的.net core1.1应用程序发送ajax请求时,我在get和post方法上都得到了404错误。从.net核心应用程序调用时找不到web api路径
public static class WebApiConfig
{
public static void Register(HttpConfiguration config)
{
// Web API configuration and services
// Web API routes
config.MapHttpAttributeRoutes();
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{action}/{id}",
defaults: new { id = RouteParameter.Optional }
);
}
}
public class MainController : ApiController
{
/// <summary>
/// ExistingItems - keep a list of all items that are currently in
the list and were not processed, for auditing.
/// </summary>
public List<XMLData.Struct> ExistingItems = new List<XMLData.Struct>
();
[Route("api/Main/GetMyList")]
[ActionName("GetMyList")]
[System.Web.Http.HttpGet]
public HttpResponseMessage GetMyList()
{
HttpResponseMessage resp = new HttpResponseMessage();
resp.StatusCode = HttpStatusCode.OK;
return resp;
}
/// <summary>
/// PostXMLFile - process the xml file on the server.
/// </summary>
/// <param name="value"></param>
[Route("api/Main/SaveXML/")]
[ActionName("SaveXml")]
[System.Web.Http.HttpPost]
public HttpResponseMessage SaveXml(string value)
{
List<XMLData.Struct> pageElements = ConvertToList(value);
var url = "/resource/BigBearNew.xml";
var path = System.Web.Hosting.HostingEnvironment.MapPath(url);
XmlDocument xDoc = new XmlDocument();
xDoc.Load(path);
foreach (var pge in pageElements)
{
if (!ElementExists(xDoc, pge))
{
AddAsNew(xDoc, pge);
};
}
HttpResponseMessage resp = new HttpResponseMessage();
resp.StatusCode = HttpStatusCode.OK;
return resp; // OK = 200
}
这里是.net core1.1调用。我有.net核心项目中引用的WebApi项目。
function saveElementList()
{
$.ajax({
url: 'api/Main/SaveXml',
type: 'POST',
dataType: 'json',
contentType: 'application/json; charset=utf-8',
data: JSON.stringify(elementNodes),
success: function (data) {
alert("Saved successfully");
}
});
}
function getList() {
$.ajax({
url: 'api/Main/GetMyList',
type: 'GET',
dataType: 'json',
contentType: 'application/json; charset=utf-8',
// data: JSON.stringify(elementNodes),
success: function (data) {
alert("got list successfully");
}
});
}
我检查了控制器上的路由和属性,看起来他们是正确的。提前致谢。
答
我发现有几个项目挖掘更多。
-
这是一个CORS问题。一旦我加入: var enableCorsAttribute = new EnableCorsAttribute(“*”, “Origin,Content-Type,Accept”, “GET,PUT,POST,DELETE,OPTIONS”); config.EnableCors(enableCorsAttribute);
到WebApiConfig,我能够使用我的测试get函数来测试它到达服务器。另外我的ajax调用数据在服务器端没有正确配置。
最后,WebApi的URL不正确。我需要提供整个网址与端口号。
感谢您的帮助。
+0
也是如此。正如石匠所言,这与dotnetcore无关。 –
我看不到.NET Core在哪里适合这个。我在.NET Framework上看到一个Web API 2应用程序,并且看到一些AJAX调用。 – mason
你能从浏览器中找到终点吗? – InitLipton
您是否在webapi和core之间使用相同的端口(默认值为5000)? –