Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/tfs/3.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# web api找不到Get方法-500错误_C#_.net_Asp.net Web Api - Fatal编程技术网

C# web api找不到Get方法-500错误

C# web api找不到Get方法-500错误,c#,.net,asp.net-web-api,C#,.net,Asp.net Web Api,当我试图调用web api以获得单个供应商时。它返回一个500错误 我试图突破Get(Guid id)的内部,但它从未进入 我知道它正在访问控制器,但似乎找不到Get(Guid id)函数 你知道为什么吗?我错过什么了吗 web api路由 config.Routes.MapHttpRoute( name: "Module", routeTemplate: "api/module/{controller}/{id}/{action}

当我试图调用web api以获得单个供应商时。它返回一个500错误

我试图突破Get(Guid id)的内部,但它从未进入

我知道它正在访问控制器,但似乎找不到Get(Guid id)函数

你知道为什么吗?我错过什么了吗

web api路由

config.Routes.MapHttpRoute(
                name: "Module",
                routeTemplate: "api/module/{controller}/{id}/{action}",
                defaults: new {  id = RouteParameter.Optional, action = RouteParameter.Optional }
            );
api控制器

namespace App.WebUI.Controllers.api.Module
{
    public class VendorsController : ApiController
    {
        private readonly UnitOfWork _repository = new UnitOfWork();


        // GET api/Module/vendors
        [HttpGet]
        public HttpResponseMessage Get()
        {
           return all; 

        }

        // GET api/Module/vendors/5
        [HttpGet]
        public HttpResponseMessage Get(Guid id)
        {
           return single
        }

        // POST api/Module/vendors
        [HttpPost]
        public HttpResponseMessage Post(Vendor vendor)
        {
           insert single
        }

        [HttpPut]
        //PUT api/Module/Vendors
        public HttpResponseMessage Put(Vendor vendor)
        {
            update single
        }
    }
}

这就是我要做的,让它工作

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

然后在默认操作(GET()、GET(id)、POST()、PUT()、DELETE())中,我添加了数据注释:[ActionName(“DefaultAction”)]

这是内部错误,不是404。您是否有任何已注册或委派处理程序的全局操作筛选器?是否有错误消息?您正在调用的URL是什么?您的测试URL是什么?您的
routeTemplate
与您评论的URL不匹配。尝试
api/module/{controller}/{action}/{id}
我想关于您的路由最让人困惑的是,我不理解为什么您要交换
action
id
参数。在路由中,您不能依赖
操作
参数来识别有效端点,因为您无法具体识别哪个参数用于
操作
,哪个参数用于
id
,因为两者都没有约束。这似乎是一个很好的利用机会