Servicestack 服务未加载

Servicestack service not loading

我迷路了...我错过了什么。我复制了一个工作服务并重命名了它。该服务不会加载到服务堆栈中。无法通过 api 访问并且未显示在元数据页面中...

代码如下

    using cbw.service.models.Models;
using ServiceStack;

namespace cbw.service.models.Routes
{
    /// <summary>
    /// Company RTO - Response DataObject with custom Route
    /// </summary>
    [Route("/GetPermission/{Id}", "GET")]
    public class GetPermission : IReturn<GetPermission>
    {
        public int Id { get; set; }
    }

    [Route("/Permission", "PUT")]
    public class AddPermission : PostReturn
    {
        public string Name { get; set; }
        public string Description { get; set; }
        public int AuditUserId { get; set; }
    }

    [Route("/Permission/{Id}", "PUT")]
    public class UpdatePermission : IReturn<UpdatePermission>
    {
        public int Id { get; set; }
        public string Name { get; set; }
        public string Description { get; set; }
        public int AuditUserId { get; set; }
    }

    [Route("/Permission/{Id}", "DELETE")]
    public class DeletePermission : IReturnVoid
    {
        public int Id { get; set; }
    }
}



using System;
using cbw.service.models.Models;
using cbw.service.models.Routes;
using ServiceStack;
using ServiceStack.OrmLite;

namespace cbw.service.interfaces.Services
{
    /// <summary>
    /// 
    /// </summary>
    //[Authenticate]
    public class SecurityService : Service
    {
        /// <summary>
        /// To insert new permission
        /// </summary>
        /// <returns></returns>
        public long AddPermission(AddPermission request)
        {
            var perm = request.ConvertTo<Permission>();
            perm.AuditUserId = Convert.ToInt32(UserInfo.UserSession().UserAuthId);
            return Db.Insert(perm);
        }

        /// <summary>
        /// To Update permission
        /// </summary>
        /// <param name="request"></param>
        /// <returns></returns>
        public int UpdatePermission(UpdatePermission request)
        {
            using (var trans = Db.OpenTransaction())
            {
                //Insert Historical
                var permissionHist = Db.SingleById<Permission>(request.Id).ConvertTo<PermissionHist>();
                permissionHist.Action = DbAction.Update;

                //update Permission
                var perm = request.ConvertTo<Permission>();
                perm.AuditUserId = Convert.ToInt32(UserInfo.UserSession().UserAuthId);

                var i = Db.Update(perm);
                Db.Insert(permissionHist);

                trans.Commit();
                return i;
            }
        }

        /// <summary>
        /// To delete permissions
        /// </summary>
        /// <param name="request"></param>
        /// <returns></returns>
        public int DeletePermisssion(DeletePermission request)
        {
            //Insert Historical
            Db.Insert(Db.SingleById<Permission>(request.Id).ConvertTo<PermissionHist>().Action = DbAction.Delete);

            return Db.Delete<Permission>(c => c.Id == request.Id);
        }

    }
}

ServiceStack 服务的方法应该是它应该处理的 HTTP 动词的名称,例如 Get/Post/Put/Delete/Patch 等或 Any 来处理任何动词上的请求。

响应应与请求 DTO 的 IReturn<TResponse> 接口标记中的内容相匹配,通常是响应 DTO。它 不应该 是原始 值类型 intlong 但可以是原始 参考类型,如stringbyte[]

或者如果您的 Request DTO 有一个 IReturnVoid 接口标记,您的服务方法应该是 void.