почему этот URL не может соответствовать Route Temple в asp.net webapi - PullRequest
0 голосов
/ 28 января 2019

Почему этот URL (http://localhost:52806/openapi/Icrmorder.TestApi/) может совпадать с храмом маршрута (openapi / I {controller}. {Action} /), а URL (http://localhost:52806/IRegion.TestApi/) нет?

thisтакое Microsoft.AspNet.WebApi 5.2.4 У меня был гугл и я пробовал все условия, все еще безрезультатно, мне нужна помощь, Ths!

1.WebApiConfig.cs:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web.Http;

namespace TestRegion
{
    public static class WebApiConfig
    {
        public static void Register(HttpConfiguration config)
        {
            // Web API 配置和服务

            // Web API 路由
            config.MapHttpAttributeRoutes();

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

2.RegionController.cs

using System.Web.Http;

namespace TestRegion.Controllers
{
    public class RegionController : ApiController
    {
        [HttpGet]
        public IHttpActionResult TestApi()
        {
            return Json( new { value="ceshi" });
        }
    }
}
CrmOrderController.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Net.Http;
using System.Web.Http;

namespace TestRegion.Controllers
{
    public class CrmOrderController : ApiController
    {
        [HttpGet]
        public IHttpActionResult TestApi()
        {
            return Json(new { value = "ceshi" });
        }
    }
}

результат : enter image description here

enter image description here

1 Ответ

0 голосов
/ 28 января 2019

Проблема 1 в том, что в вашем шаблоне маршрута есть ., поэтому ваша конфигурация должна иметь:

<modules runAllManagedModulesForAllRequests="true" />

, если вы используете HTTP.SYS (например, ISIS) и выего уже нет.

Выпуск 2 может быть ограничением веб-API.Я не уверен, что у вас может быть два параметра маршрута в одном сегменте URL.Теоретически это должно быть возможно, но я никогда раньше не видел такого шаблона маршрута.

Наконец, ваша конфигурация маршрута указывает, что у него есть необязательный параметр маршрута {id}, которого нет даже в шаблоне маршрута.Это не должно влиять на результаты, но его конфигурация не имеет смысла и, возможно, вводит в заблуждение рецензента.

Я хотел бы рассмотреть вопрос об удалении . из шаблона маршрута и дополнительно рассмотреть возможность использования болееобычный шаблон маршрута, форма которого ближе к {controller}/{action}.

Надеюсь, это поможет.

...