相关疑难解决方法(0)

控制器按区域划分

可能重复:
如何注册已在AREA中创建的控制器

我有一个问题 - 是否可以做下一个?

我有三个方面:

_Default
SiteOne
SiteTwo
Run Code Online (Sandbox Code Playgroud)

在每个区域内我都有一个名称相同的ApiController,但当然在不同的名称空间中:

MvcAppliaction.Areas._Default.Controllers.ValuesController
MvcAppliaction.Areas.SiteOne.Controllers.ValuesController
MvcAppliaction.Areas.SiteTwo.Controllers.ValuesController
Run Code Online (Sandbox Code Playgroud)

我还有一个当前值(我想使用)的配置区域.

如果他进入浏览器,我想将用户映射到适当区域(我可以在配置中找到)中的控制器:

/api/values
Run Code Online (Sandbox Code Playgroud)

例如,如果配置文件中的当前区域是SiteOne,则此请求应映射到MvcAppliaction.Areas.SiteOne.Controllers.ValuesController控制器,但如果我将配置文件中的当前区域更改为_Default的SiteTwo,则应将其映射到正确的控制器.

PS.使用MVC控制器很简单,您只需设置路线:

routes.MapRoute(
    name: "Default",
    url: "{controller}/{action}/{id}",
    defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional },
    namespaces: new[] { "MvcApplication.Web.Areas." + SiteName + ".Controllers") }
);
Run Code Online (Sandbox Code Playgroud)

c# asp.net-mvc-areas asp.net-web-api asp.net-web-api-routing

7
推荐指数
3
解决办法
2万
查看次数

找到了与请求匹配的多个操作

我已经阅读了很多关于路由和控制器的问题,但我根本无法找到我正在寻找的东西.我有这个结构的控制器:

更新:包含完整的类源.

public class LocationsController : ApiController
{
    private readonly IUnitOfWork _unitOfWork;

    public LocationsController(IUnitOfWork unitOfWork)
    {
        _unitOfWork = unitOfWork;
    }

    // GET /api/locations/id
    public Location Get(Guid id)
    {
        return this.QueryById<Location>(id, _unitOfWork);
    }

    // GET /api/locations
    public IQueryable<Location> Get()
    {
        return this.Query<Location>(_unitOfWork);
    }

    // POST /api/locations
    public HttpResponseMessage Post(Location location)
    {
        var id = _unitOfWork.CurrentSession.Save(location);
        _unitOfWork.Commit();

        var response = Request.CreateResponse<Location>(HttpStatusCode.Created, location);
        response.Headers.Location = new Uri(Request.RequestUri, Url.Route(null, new { id }));

        return response;
    }

    // PUT /api/locations
    public Location Put(Location location) …
Run Code Online (Sandbox Code Playgroud)

c# asp.net-mvc-routing asp.net-web-api

3
推荐指数
1
解决办法
7403
查看次数