【发布时间】:2014-12-29 18:44:33
【问题描述】:
我似乎无法对我的 Web API 控制器进行 ajax 调用。 URL 不正确(未找到方法)或出现方法不允许错误。这是我的 ajax 调用:
$.ajax({
url: 'server/InstallApp',
type: 'POST',
data: {server: serverAsJson, appWithGroup: appWithGroupAsJson},
contentType: "application/json",
success: InstallRequested
});
正在从该 URL 调用该 ajax 调用:
http://serverName/PrestoWebApi/app/#/server/ApplicationServers%5E%5E8
这些是我在上述 ajax 调用中尝试使用的各种 URL,以及结果:
url: 'server/InstallApp'
POST http://serverName/PrestoWebApi/app/server/InstallApp 404 (Not Found)
请注意缺少#。不确定这是否重要。
url: '#/server/InstallApp'
POST http://serverName/PrestoWebApi/app/ 405 (Method Not Allowed)
不知道为什么 URL 会被这样截断。为什么当 URL 甚至与控制器不匹配时 Method Not Allowed?
url: '/PrestoWebApi/app/#/server/InstallApp'
POST http://serverName/PrestoWebApi/app/ 405 (Method Not Allowed)
我不确定要尝试什么。我已经用其他应用程序做到了这一点。我什至尝试输入webdav removal entries in my web.config。
这是我的控制器(请注意,我可以在我的控制器中调用 Get 方法):
[EnableCors(origins: "http://serverName", headers: "*", methods: "*")]
public class ServerController : ApiController
{
public ApplicationServer Get(string id)
{
// Get code here
}
[HttpPost]
public void InstallApp(ApplicationServer server, ApplicationWithOverrideVariableGroup appWithGroup)
{
Debug.WriteLine("snuh");
}
我很茫然。有什么想法可以尝试吗?
【问题讨论】:
-
web api 网站的 url 是什么?它与您调用它的页面相同吗?
-
Web api 应用程序应该部署到与您的 Web 项目不同的 URL,所以我不确定您为什么只是使用“路由”而不是 URL + 路由。
-
Web API 和网站在同一个 URL。有问题吗?
-
好的,所以您是从同一个项目内的 JS 文件调用的,对吧?无论哪种方式,您的 ServerController 上都不需要 CORS 属性。
-
我认为 CORS 属性是必要的,因为 DNS 问题:stackoverflow.com/a/26680568/279516
标签: javascript c# ajax asp.net-web-api