Идентификатор клиента: 1147947322680754 PAT: 2a22564a5ce15dd46ee66468097ad0b9
Попытка настроить маршрутизацию атрибутов на моем новом API не может быть выполнена после нескольких часов чтения и копания в источниках. Вы мое последнее средство. Что я делаю не так?
Я настроил app.UseMvc ();при запуске и использовании следующего кода ...
Вот как выглядит BaseController;
[ApiController]
public abstract class GKControllerBase : ControllerBase
{
private readonly IHttpContextAccessor _accessor;
public GKControllerBase(IHttpContextAccessor accessor)
{
this._accessor = accessor;
}
}
Вот как выглядит UserController.cs;
[ApiController]
[Route("Services/[controller]/[action]")]
public class UserController : GKControllerBase
{
public UserController(IHttpContextAccessor accessor) : base(accessor)
{
}
[HttpGet] //Services/User/Logout
[UserTypeFilter(UserType.Anonymous, UserTypeFilterMode.SingularDeny, ErrorMessage = "You are not logged in!")]
public object Logout()
{
if (GKManagers.SessionManager.TryGetCurrentUser(base.HttpContext, out User user))
{
GKManagers.SessionManager.Logout(base.HttpContext, user.UniqueId);
return this.Answer(HttpStatusCode.OK, null, "Logout successful");
}
return this.Answer(HttpStatusCode.InternalServerError);
}
[HttpGet("{username}/{password}")] //Services/User/Login/username/password
[UserTypeFilter(UserType.Anonymous, UserTypeFilterMode.SingularAllow, ErrorMessage = "You are already logged in!")]
public object Login(string username, string password)
{
if (GKManagers.SessionManager.TryLogin(base.HttpContext, username, password, out User user))
return this.Answer(HttpStatusCode.OK, user, "Login successful");
return this.Answer(HttpStatusCode.InternalServerError);
}
}
Вот какGroupController.cs выглядит;
[ApiController]
[Route("Services/[controller]/[action]")]
public class GroupController : GKControllerBase
{
public GroupController(IHttpContextAccessor accessor) : base(accessor)
{
}
[HttpGet("{groupID:int}")] //Services/Group/Join/1
[UserTypeFilter(UserType.Anonymous, UserTypeFilterMode.SingularDeny, ErrorMessage = "You are not logged in!")]
[PermissionFilter
(Data.Enums.ApplicationContext.Membership_Group, Operation.CanJoin, ErrorMessage = "You are not permitted to join the %groupName%. You might be already in it.")]
public object Join(Int32 groupID)
{
if (GKManagers.SessionManager.TryGetCurrentUser(this.HttpContext, out User currentUser))
{
GKManagers.Database.Membership.GroupMembership.Add(new GroupMembership()
{
Group = groupID,
User = currentUser.UserId,
IsActive = true,
JoinDate = DateTime.Now,
LastActionDate = DateTime.Now,
Status = (Int32)Status.Active,
});
}
return this.Answer(HttpStatusCode.InternalServerError);
}
}
Я пытаюсь настроить маршрут так, чтобы он был похож на прокомментированный раздел рядом с атрибутом.
Заранее спасибо!