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。它 不应该 是原始 值类型 像 int
或 long
但可以是原始 参考类型,如string
或byte[]
。
或者如果您的 Request DTO 有一个 IReturnVoid
接口标记,您的服务方法应该是 void
.
我迷路了...我错过了什么。我复制了一个工作服务并重命名了它。该服务不会加载到服务堆栈中。无法通过 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。它 不应该 是原始 值类型 像 int
或 long
但可以是原始 参考类型,如string
或byte[]
。
或者如果您的 Request DTO 有一个 IReturnVoid
接口标记,您的服务方法应该是 void
.