c# - 配置路由到api到子文件夹

标签 c# asp.net-mvc-4 asp.net-web-api routes

我正在使用 MVC 4 开发一个 webapi。 我对路由器有疑问。 如何路由到我网站下的子文件夹。例如:

www.site.com/Service

我的 WebApi 应用程序位于服务文件夹中。我的主页工作正常,但找不到 API。

这是我的默认路线:

        config.Routes.MapHttpRoute(
            name: "DefaultApi",
            routeTemplate: "api/{controller}/{id}",
            defaults: new { id = RouteParameter.Optional }
        );

我要打电话

www.site.com/Service/api/{controller}/{id}

有办法吗?

[编辑] 我将服务区域添加到 Ares 文件夹中,因为在 WebApi MVC 4 的模板中已经存在一个 HelpPage 区域。 在此文件夹中,我添加了 Controller 。

这里是服务区类

public class ServiceAreaRegistration : AreaRegistration
{
    public override string AreaName
    {
        get
        {
            return "Service";
        }
    }

    public override void RegisterArea(AreaRegistrationContext context)
    {
        context.MapRoute(
            "Service_default",
            "Service/api/{controller}/{id}",
            new { id = UrlParameter.Optional }
        );
    }
}

我不知道这是否有帮助,我的网站 www.site.com 只是一个网站,我在我的 iis 上添加并将此文件夹服务转换为应用程序。 [/编辑]

最佳答案

您需要像下面这样创建您自己的 AreaRegistration 才能使其正常工作。

 public class ServiceAreaRegistration : AreaRegistration
    {
        public override string AreaName 
        {
            get{ return "Service";}
        }

        public override void RegisterArea(AreaRegistrationContext context)
        {
            context.Routes.MapHttpRoute(
                name: "ServiceDefaultApi",
                routeTemplate: "Service/api/{controller}/{id}",
                defaults: new { id = RouteParameter.Optional }
            );
        }
    }

您还需要确保在 Application_Start()

中有以下代码
AreaRegistration.RegisterAllAreas();

更新: 您的文件夹结构应如下所示:

enter image description here

关于c# - 配置路由到api到子文件夹,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21863482/

相关文章:

c# - 安装程序似乎没有注册并抛出 MockException

c# - Enum.GetValues 和 Enum.GetNames 之间的区别

C#-根据与另一个列表的部分交集从列表中选择特定项目 (Linq + Lambda)

asp.net-mvc - 对ASP.NET MVC4中的一个提交按钮禁用客户端验证

css - MVC4 移动应用程序背景图片

jquery - 在 WebAPI 中进行 POST 调用时,请求的资源不支持 http 方法 'GET"

asp.net - ASP.NET Web API 的服务总线架构

c# - File.ReadAllText 无法读取

jquery - 更改库 graphdracula 中的字体大小

android - 如何刷新 Android 版 Spotify SDK 上的访问 token ?