tôi có một dự án WebAPI với một ApiController cơ sở tên SlashBaseService:Bắt "Không loại đã được tìm thấy phù hợp với bộ điều khiển có tên là 'SampleSlashBaseService" khi cố gắng sử dụng WebAPI
[RouteArea("uBase")]
public abstract class SlashBaseService : ApiController
{
}
Các dll kết quả được sử dụng trong một WebForms dự án vì vậy tôi cũng có một lớp WebActivator với đoạn mã sau để tạo ra các tuyến đường:
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 });
tôi cũng có một testservice trong một hội đồng riêng biệt:
public class SampleSlashBaseService : SlashBaseService
{
[GET("TestOpenMethod")]
public string GetTestOpenMethod()
{
return "Hello anonymous!";
}
[GET("Echo/{message}")]
public string GetEcho(string message)
{
return message;
}
}
Tất cả những thứ khá đơn giản. Vấn đề là khi tôi cố gắng đi đến một trong các url này tạo ra tôi nhận được thông báo sau:
Không tìm thấy loại nào khớp với bộ điều khiển có tên 'SampleSlashBaseService'.
Danh sách tuyến đường từ /routes.axd cũng có vẻ chính xác.
Tôi đã làm điều gì đó dọc theo các đường đối diện. Tôi đã có bộ điều khiển nơi nó không được cho là! 'defaults: new {controller =" APIController "}' nên là 'mặc định: new {controller =" API "}' Bạn phải OMIT 'Controller' trong' WebApiConfig.cs' của bạn! – Skovy
Đó là những gì đã xảy ra với tôi khi tôi rời hậu tố điều khiển trên WebApiConfig.cs. Nhận xét của bạn đã giúp tôi :) –
Tôi đã kéo tóc ra trước khi tôi tìm thấy điều này. Thật là một lỗi ngớ ngẩn. CẢM ƠN BẠN –