相关疑难解决方法(0)

在一个项目中混合使用Web Api和ASP.Net MVC页面

如何在一个项目中混合Web API和ASP.Net MVC页面?

例如,我有模型用户.我希望,在同一个项目中,有一个ApiController,它将响应所有用于管理User实体的HTTP动词,同时拥有一个Controller,它将根据请求的Action返回相应的强类型视图.

我无法命名两个控制器UserController.围绕这个最好的方法是什么?我应该命名一个UserApiController和另一个UserController吗?还有其他建议吗?

asp.net-mvc-4

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

没有找到提供控制器名称的路由来匹配请求URI

使用WebApi 2.2.在我的WebApiConfig.cs中,我有:

public static void Register(HttpConfiguration configuration)
{
    configuration.Routes.MapHttpRoute("API Default", "api/{controller}/{id}",
       new { id = RouteParameter.Optional });

    configuration.Routes.MapHttpRoute(
       name: "EnvironmentCreateAnnualTargetApi",
       routeTemplate: "api/EnvironmentTargets/{WorkLocationGuid}/{UserGuid}/{Year}"
    );

    configuration.Routes.MapHttpRoute(
       name: "EnvironmentUnitConversionApi",
       routeTemplate: "api/Conversions/{ConvertFromMeasureId}/{ConvertFromAmount}/{ConvertToMeasureId}/{MeasureDefinition}",
       defaults: new
       {
           ConvertFromMeasureId = RouteParameter.Optional,
           ConvertFromAmount = RouteParameter.Optional,
           ConvertToMeasureId = RouteParameter.Optional,
           MeasureDefinition = RouteParameter.Optional
        }
     );
}
Run Code Online (Sandbox Code Playgroud)

名为"EnvironmentCreateAnnualTargetApi"的路线正在运行,但是我尝试了很多不同的东西并搜索了这个网站,我无法让第二个工作.

我的控制器是这样的:

[RoutePrefix("api/Conversions")]
public class ConversionsController : ApiController
{
Run Code Online (Sandbox Code Playgroud)

然后到方法:

// GET: api/Conversions/7/5000/10/1
    [HttpGet, ActionName("Get")]
    [AllowAnonymous]
    public double Get(int ConvertFromMeasureId, double ConvertFromAmount, int ConvertToMeasureId, int MeasureDefinition)
Run Code Online (Sandbox Code Playgroud)

我已经尝试过使用和不使用MapHttpRoute方法中设置的默认值.

我一直得到的错误是:

<Error>
<Message>No HTTP resource was found …
Run Code Online (Sandbox Code Playgroud)

c# asp.net-web-api2

4
推荐指数
1
解决办法
6330
查看次数

标签 统计

asp.net-mvc-4 ×1

asp.net-web-api2 ×1

c# ×1