簡體   English   中英

路線不適用於 asp.net api 項目

[英]Routes not working on asp.net api project

我有一個簡單的 controller 像這樣:

using System.Web.Http;
using System.Configuration;

namespace LuloWebApi.Controllers
{
    [Authorize]
    [RoutePrefix("api/Version")]
    public class VersionController : ApiController
    {
        /// <summary>
        /// Gets the latest build version deployed
        /// </summary>
        /// <returns>string</returns>
        [HttpGet]
        public string Get()
        {
            return ConfigurationManager.AppSettings["buildversion"].ToString();
        }
    }

}

我的啟動是這樣的:

using Microsoft.Owin;
using Owin;

[assembly: OwinStartupAttribute(typeof(LuloWebApi.App_Start.Startup))]
namespace LuloWebApi.App_Start
{
    public partial class Startup
    {
        public void Configuration(IAppBuilder app)
        {
            ConfigureAuth(app); 
            //
        }
    }
}

和我的 web api 配置

using LuloWebApi.Components;
using System.Diagnostics.CodeAnalysis;
using System.Web.Http;
using System.Web.Http.ExceptionHandling;

namespace LuloWebApi
{
    [SuppressMessage("NDepend", "", Scope = "deep")]
    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 }
            );

            config.Services.Add(typeof(IExceptionLogger), new AiExceptionLogger());
        }
    }
}

路由配置

 [SuppressMessage("NDepend", "", Scope = "deep")]
    public class RouteConfig
    {
        public static void RegisterRoutes(RouteCollection routes)
        {
            routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

            routes.MapRoute(
                name: "Default",
                url: "{controller}/{action}/{id}",
                defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
            );
        }
    }

但是,當我將 go 改為: http://localhost:4478/api/Version

我找不到資源,我在這里缺少什么?

您使用“RoutePrefix”而不是“Route”

[RoutePrefix("api/Version")]
public class VersionController : ApiController

[Route("api/Version")]
public class VersionController : ApiController

路由前綴將被添加到您的路由中,但它本身並不是真正的路由。

編輯:在您的路由配置中,您還需要指定您使用該行的屬性路由:

config.MapHttpAttributeRoutes();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM