C# Web API控制器路径?
我不熟悉Web API,并遵循了一些示例,但我无法确定在哪里指定了控制器名称 我的global.asax中有: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:
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可以位于项目中的任何位置,但建议将其置于控制器之下。文件名可以是任何内容。在整个项目中搜索classTestAPIController
。嗯,我每次尝试都会收到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}占位符的末尾。现在可以用了谢谢