Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# WebApi2 RoutePrefix和端点路由=未找到_C#_.net_Asp.net Web Api - Fatal编程技术网

C# WebApi2 RoutePrefix和端点路由=未找到

C# WebApi2 RoutePrefix和端点路由=未找到,c#,.net,asp.net-web-api,C#,.net,Asp.net Web Api,我装饰了我的api控制器,例如: [RoutePrefix(“api/admin/notification”)] 公共类语言控制器:BaseController 在内部,我有一个GET端点: [HttpGet] [Route("app/{productGuid}")] public async Task<IHttpActionResult> GetAllNotificationsForApp([FromUri]string productGuid) [HttpGet] [路由(“a

我装饰了我的api控制器,例如:

[RoutePrefix(“api/admin/notification”)]
公共类语言控制器:BaseController

在内部,我有一个GET端点:

[HttpGet]
[Route("app/{productGuid}")]
public async Task<IHttpActionResult> GetAllNotificationsForApp([FromUri]string productGuid)
[HttpGet]
[路由(“app/{productGuid}”)]
公共异步任务GetAllNotificationsForApp([FromUri]字符串productGuid)
现在,我假设访问此资源的正确方式是:

获取http://[api url]/api/admin/notification/app/someguid

然而,这会产生404

我所尝试的:

-删除
[FromUri]

-将productGuid作为querystring的一部分传递,即
../app?productGuid=something
(与
/app/{productGuid}
相反)

是的,我正在使用
config.maphttpAttribute()

我遗漏了什么吗?

[FromUri]
用于强制Web API从URI读取复杂类型。移除它应该是有效的

您还可以研究将参数从
string
更改为
Guid
,并对路由中的占位符应用适当的约束。ie:
[路由(“app/{productGuid:guid}”)]


事实证明,不能有两个具有相同类名的api控制器,即使它们映射到不同的路由

我有另一个名为
LanguageController
的控制器,位于不同的命名空间中,并映射到不同的路由;我不得不重新命名其中一个以使其工作


基于

[FromUri]
用于强制Web API从URI读取复杂类型。移除它应该是有效的。您还可以研究将参数从
string
更改为
Guid
,并对路由中的占位符应用适当的约束。ie:
[Route(“app/{productGuid:guid}”)]
谢谢你的回答,我已经指出了问题的原因。@carlitross,是的。这种情况有时会发生。很高兴你终于解决了这个问题。快乐编码!!!
[RoutePrefix("api/admin/notification")]
public class LanguageController : BaseController {
    //GET: api/admin/notification/app/{guid}
    [HttpGet]
    [Route("app/{productGuid:guid}")]
    public async Task<IHttpActionResult> GetAllNotificationsForApp(Guid productGuid) {...}

}
public static class WebApiConfig {
    public static void Register(HttpConfiguration config) {
        // Attribute routing.
        config.MapHttpAttributeRoutes();

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