【发布时间】:2021-08-27 17:03:15
【问题描述】:
我看到了许多与我的标题相似的其他问题,但似乎没有一个问题是相同的问题或提供我需要的见解。
我已将 Web API 控制器添加到现有的旧版 4.5 WebForms 应用程序中,并试图通过对现有代码库的最小更改使其工作。因此,当您从头开始创建项目时,我没有典型的静态 WebApiConfig 类和其他默认创建的项目。我现有的代码库是:
Global.asax
protected void Application_Start( Object sender, EventArgs e )
{
GlobalConfiguration.Configure( config =>
{
config.MapHttpAttributeRoutes();
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new
{
id = RouteParameter.Optional
}
);
} );
}
控制器
namespace Modeler.Endpoints
{
public class KatAppEndpoints : ApiController
{
[HttpGet]
[Route( "api/katapp/calculations" )]
public IEnumerable<string> GetCalculations()
{
return new string[] { "value1", "value2" };
}
}
}
Javascript
$(document).ready(function() {
$.getJSON("api/katapp/calculations")
.done(function () { debugger; })
.fail(function (_jqXHR, errorStatus, errorMessage) { debugger; })
.always(function () { debugger; });
});
调用时,我点击了fail 和always,结果是:
错误状态:“错误”
错误消息:“未找到”
我遗漏了什么明显的东西?
更新
如果我将控制器更改为...
namespace Modeler.Endpoints
{
public class KatAppsController : ApiController
{
public IEnumerable<string> Get()
{
return new string[] { "value1", "value2" };
}
}
}
还有我的 javascript 到:
$.getJSON("api/katapps")
.done(function () { debugger; })
.fail(function (_jqXHR, errorStatus, errorMessage) { debugger; })
.always(function () { debugger; });
一切正常。但是,我有一些端点并想使用属性,但如果我能弄清楚如何在 url 中获取另一部分(即上面的 /calculations 部分),我可能会放弃它。
【问题讨论】:
-
您使用的是 HTTP 还是 HTTPS?如果服务器需要 HTTPS,而您发送的 HTTP 可能会导致此问题。现在大多数服务器都需要 HTTPS。在 4.5 中,一些仍然使用 HTTP。
-
本地开发,所以是的,在开发/测试时使用 HTTP。有没有办法允许 HTTP?
-
如果你调试,你会打
GetCalculations()函数吗? -
不,我从来没有进入过
GetCalculations()。请参阅我对有关更多信息的问题的更新。 -
服务器有要求 https 之类的设置。请参阅:docs.microsoft.com/en-us/aspnet/web-api/overview/security/…
标签: c# asp.net webforms asp.net-web-api2