Asp.net web api 我无法使用umbraco项目在WebAPI中找到Get方法
我无法点击webapi操作。 控制台中出现500个错误,未达到api 这是我的ajax调用:Asp.net web api 我无法使用umbraco项目在WebAPI中找到Get方法,asp.net-web-api,asp.net-web-api2,umbraco,umbraco7,asp.net-web-api-routing,Asp.net Web Api,Asp.net Web Api2,Umbraco,Umbraco7,Asp.net Web Api Routing,我无法点击webapi操作。 控制台中出现500个错误,未达到api 这是我的ajax调用: function getProducts() { var response; $.getJSON("/api/Product") .done(function (data) { response = $.map(data, function (item) { return {
function getProducts() {
var response;
$.getJSON("/api/Product")
.done(function (data) {
response = $.map(data,
function (item) {
return { label: item.Name + ' (' + item.Code + ')' };
});
});
return response;
};
ajax没有成功。请求跳过getJson
调用并返回undefined
response
这是我的api控制器方法:
public class ProductController : ApiController {
// GET api/<controller>
public IEnumerable<ProductModel> ProductList()
{
ProductSearcher searcher = new ProductSearcher();
return searcher.GetResults();
}
}
Postman返回的对象引用未设置为对象的实例
,但它甚至未命中产品列表
我已选择运行多个项目-我的应用程序启动项目和web api项目
这是stacktrace错误-在我看来,当我需要路由到非umbraco api时,umbraco确实会查找路由:
[NullReferenceException: Object reference not set to an instance of an object.]
Umbraco.Web.Routing.ContentLastChanceFinderByNotFoundHandlers.HandlePageNotFound(PublishedContentRequest docRequest) +152
Umbraco.Web.Routing.ContentLastChanceFinderByNotFoundHandlers.TryFindContent(PublishedContentRequest docRequest) +10
Umbraco.Web.Routing.PublishedContentRequestEngine.HandlePublishedContent() +529
Umbraco.Web.Routing.PublishedContentRequestEngine.FindPublishedContentAndTemplate() +250
Umbraco.Web.Routing.PublishedContentRequestEngine.PrepareRequest() +107
Umbraco.Web.UmbracoModule.ProcessRequest(HttpContextBase httpContext) +361
Umbraco.Web.UmbracoModule.<Init>b__8(Object sender, EventArgs e) +80
System.Web.SyncEventExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +141
System.Web.HttpApplication.ExecuteStepImpl(IExecutionStep step) +48
System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +71
编辑
我将路由配置从api
更改为dataapi
,例如routeTemplate:“dataapi/{controller}/{id}”
,因此它现在运行,但仍然抛出错误:
405 Method not allowed
编辑2
明白了!将方法名称从
ProductList
更改为Get
,现在可以使用您可以使用UmbracoApiController,以确保Umbraco不会尝试将URL与内容匹配?然后到控制器的路径将改为/umbraco/api/yourcontroller,但所有操作都应该是一样的。查看详细信息。是的,我知道,但我不想使用umbraco api控制器,因为该项目没有对umbraco的引用,我也不希望它依赖于umbraco如果网站运行在umbraco上,你也依赖于umbraco,对吗?我想您可以尝试将/api/添加到reservedUrls,看看这是否有帮助,但是。。。我的建议仍然是接受Umbraco,它没有那么危险:-)不,但在这种情况下,使用Umbraco只是为了保持路由是没有用的。api项目不依赖于umbraco。翁布拉科项目取决于api项目的结果。无论如何,谢谢你-你让我想到重命名api路由配置。
405 Method not allowed