Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/334.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控制器路径?_C#_Asp.net Web Api_Asp.net Web Api2 - Fatal编程技术网

C# Web API控制器路径?

C# Web API控制器路径?,c#,asp.net-web-api,asp.net-web-api2,C#,Asp.net Web Api,Asp.net Web Api2,我不熟悉Web API,并遵循了一些示例,但我无法确定在哪里指定了控制器名称 我的global.asax中有: protected void Application_Start(object sender, EventArgs e) { RouteTable.Routes.MapHttpRoute( name: "API Controller", routeTemplate: "api/{controller}/{action}/{id}", defaults:

我不熟悉Web API,并遵循了一些示例,但我无法确定在哪里指定了控制器名称

我的global.asax中有:

protected void Application_Start(object sender, EventArgs e)
{
    RouteTable.Routes.MapHttpRoute(
    name: "API Controller",
    routeTemplate: "api/{controller}/{action}/{id}",
    defaults: new { id = System.Web.Http.RouteParameter.Optional }
    );
}
我有一个叫TestAPI.cs的控制器

内容如下:

namespace Testing
{
    public class TestAPI : ApiController
    {
        // GET api/<controller>
        public IEnumerable<string> Get()
        {
            return new string[] { "value1", "value2" };
        }

        // GET api/<controller>/5
        public string Get(int id)
        {
            string test= "Hello!";
            return test
        }
    }
}
命名空间测试
{
公共类TestAPI:ApiController
{
//获取api/
公共IEnumerable Get()
{
返回新字符串[]{“value1”,“value2”};
}
//获取api//5
公共字符串Get(int-id)
{
string test=“你好!”;
回归试验
}
}
}
我只把“returntest”作为堆栈溢出的一个例子,因为它包含很多代码

因此,如果我在jQuery中使用它,我将为控制器使用什么路径?

应该是

http://[yourserver]/[yourapp]/api/testapi

这取决于你如何设置你的应用程序

http://[yourserver]/[yourapp]/api/testapi


根据您设置应用程序的方式

将控制器重命名为
TestapController
并从路由中删除{action}参数。

将控制器重命名为
TestapController
并从路由中删除{action}参数。

控制器名称不应该以“controller”结尾吗即使是WebApi控制器

我想

public class TestAPI : ApiController
应该是

public class TestAPIController : ApiController

即使是WebApi控制器,控制器名称也不应该以“controller”结尾吗

我想

public class TestAPI : ApiController
应该是

public class TestAPIController : ApiController

除了Web Api控制器名称的命名约定外,还需要更改路由配置。见下文:

1) 更改
TestAPI
控制器,如下所示:

 public class TestAPIController : ApiController
    GlobalConfiguration.Configuration.Routes.MapHttpRoute(
      name: "API Controller",
      routeTemplate: "api/{controller}/{id}",
      defaults: new { id = RouteParameter.Optional }
      );
2) 在应用程序的启动方法中更改MapHttpRoute,如下所示:

 public class TestAPIController : ApiController
    GlobalConfiguration.Configuration.Routes.MapHttpRoute(
      name: "API Controller",
      routeTemplate: "api/{controller}/{id}",
      defaults: new { id = RouteParameter.Optional }
      );

注意:别忘了将实际文件名格式
TestAPI.cs
更改为
TestAPIController.cs

除了Web Api控制器名称的命名约定外,还需要更改路由配置。见下文:

1) 更改
TestAPI
控制器,如下所示:

 public class TestAPIController : ApiController
    GlobalConfiguration.Configuration.Routes.MapHttpRoute(
      name: "API Controller",
      routeTemplate: "api/{controller}/{id}",
      defaults: new { id = RouteParameter.Optional }
      );
2) 在应用程序的启动方法中更改MapHttpRoute,如下所示:

 public class TestAPIController : ApiController
    GlobalConfiguration.Configuration.Routes.MapHttpRoute(
      name: "API Controller",
      routeTemplate: "api/{controller}/{id}",
      defaults: new { id = RouteParameter.Optional }
      );


注意:别忘了将实际文件名格式
TestAPI.cs
更改为
TestAPIController.cs

您的控制器名称应为TestapController。csController可以位于项目中的任何位置,但建议将其置于控制器之下。文件名可以是任何内容。是否在整个项目中搜索类
TestapicController
。嗯,我尝试的任何操作似乎都会收到404错误消息?您的控制器名称应为TestapicController。csController可以位于项目中的任何位置,但建议将其置于控制器之下。文件名可以是任何内容。在整个项目中搜索class
TestAPIController
。嗯,我每次尝试都会收到404错误消息?嗯,每次尝试都会收到404错误消息?嗯,每次尝试都会收到404错误消息?嗨,林,我已经按照你的答案更改了这个消息,但还是不走运!给我一个404!Thankshi@realtek,我想你忘了将文件名TestAPI.cs更改为TestapicController.cs,请参阅我的更新答案。嗨,林,是的,我也这么做了,但仍然不走运。你能确认一下文件系统的结构应该是什么吗?那么TestAPIController.cs是否在api/Controllers/TestAPIController.cs中?或者它实际上没有查看任何文件系统?感谢TestapicController.cs文件应位于控制器文件夹中。如果不是,你需要改变你的路线。谢谢林!我现在开始工作了,我只是读到了我没有意识到你需要删除客户端请求中的“控制器”位。它会自动添加到{controller}占位符的末尾。现在可以了,谢谢石林,我已经按照你的回答改变了,但还是没有运气!给我一个404!Thankshi@realtek,我想你忘了将文件名TestAPI.cs更改为TestapicController.cs,请参阅我的更新答案。嗨,林,是的,我也这么做了,但仍然不走运。你能确认一下文件系统的结构应该是什么吗?那么TestAPIController.cs是否在api/Controllers/TestAPIController.cs中?或者它实际上没有查看任何文件系统?感谢TestapicController.cs文件应位于控制器文件夹中。如果不是,你需要改变你的路线。谢谢林!我现在开始工作了,我只是读到了我没有意识到你需要删除客户端请求中的“控制器”位。它会自动添加到{controller}占位符的末尾。现在可以用了谢谢