Asp.net web api 我无法使用umbraco项目在WebAPI中找到Get方法

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 {

我无法点击webapi操作。 控制台中出现500个错误,未达到api

这是我的ajax调用:

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.&lt;Init&gt;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&amp; 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