gpt4 book ai didi

c# - 尝试使用 WebAPI 时获取 "No type was found that matches the controller named ' SampleSlashBaseService'"

转载 作者:IT王子 更新时间:2023-10-29 04:45:28 24 4
gpt4 key购买 nike

我有一个带有名为 SlashBaseService 的基本 ApiController 的 webapi 项目:

[RouteArea("uBase")]
public abstract class SlashBaseService : ApiController
{
}

生成的 dll 用于 WebForms 项目,因此我还有一个 WebActivator 类,其中包含以下代码来生成路由:

RouteTable.Routes.MapHttpAttributeRoutes(config =>
{
// Get all services inheriting from SlashBaseService
foreach (var assembly in AppDomain.CurrentDomain.GetAssemblies())
{
foreach (var type in assembly.GetTypes())
{
if (type.IsSubclassOf(typeof(SlashBaseService)))
{
// Scan assembly
config.ScanAssembly(assembly);

// Skip the remaining types in this assembly
break;
}
}
}
});

RouteTable.Routes.MapHttpRoute(
name: "DefaultBase",
routeTemplate: "base/{controller}/{id}",
defaults: new { id = RouteParameter.Optional });

我在单独的程序集中也有一个测试服务:

public class SampleSlashBaseService : SlashBaseService
{
[GET("TestOpenMethod")]
public string GetTestOpenMethod()
{
return "Hello anonymous!";
}

[GET("Echo/{message}")]
public string GetEcho(string message)
{
return message;
}
}

都是非常简单的东西。问题是当我尝试访问它生成的其中一个 url 时,我收到以下消息:

No type was found that matches the controller named 'SampleSlashBaseService'.

/routes.axd 中的路由列表看起来也是正确的。

最佳答案

找到问题了。

ApiControllers 类名需要以“Controller”为后缀,而我的没有。将其更改为 SampleSlashBaseController 解决了问题。

注意:可以像我一样用“服务”作为后缀,但是你必须像这里描述的那样实现一个自定义的IHttpControllerSelector:http://netmvc.blogspot.no/2012/06/aspnet-mvc-4-webapi-support-areas-in.html

关于c# - 尝试使用 WebAPI 时获取 "No type was found that matches the controller named ' SampleSlashBaseService'",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11384552/

24 4 0