ServiceStack在Authentication生成的UserAuth表上实现CRUD

时间:2015-09-05 00:45:50

标签: authentication servicestack

我正在尝试内置的ServiceStack身份验证。我的方法是' GET 'http://localhost:47391/api/register', PUT 'http://localhost:47391/api/json/reply/Register' POST 'http://localhost:47391/api/json/reply/Register' '所以用户'信息存储在Sql Server中,而不是内存存储中的默认值。我使用Postman来测试端点。 我的目标是接收用户行,更新用户信息,创建用户,删除用户行。这些是我在导入后在Postman中找到的端点(我没有创建这些端点):

/{id}

我测试过POST,Sql Server自动创建表来存储用户数据。并且数据可以写入Sql Server,因此我对POST没有任何问题。

但是对于PUT,它不是用于更新现有行吗?我追加了{ "ResponseStatus": { "ErrorCode": "NotImplementedException", "Message": "Could not find method named Get(Register) or Any(Register) on Service RegisterService", "StackTrace": " at ServiceStack.Host.ServiceExec`1.Execute(IRequest request, Object instance, Object requestDto, String requestName)\r\n at ServiceStack.Host.ServiceRequestExec`2.Execute(IRequest requestContext, Object instance, Object request)\r\n at ServiceStack.Host.ServiceController.<>c__DisplayClass11.<>c__DisplayClass13.<RegisterServiceExecutor>b__10(IRequest reqCtx, Object req)\r\n at ServiceStack.Host.ServiceController.ManagedServiceExec(ServiceExecFn serviceExec, IService service, IRequest request, Object requestDto)\r\n at ServiceStack.Host.ServiceController.<>c__DisplayClass11.<RegisterServiceExecutor>b__f(IRequest requestContext, Object dto)\r\n at ServiceStack.Host.ServiceController.Execute(Object requestDto, IRequest req)\r\n at ServiceStack.HostContext.ExecuteService(Object request, IRequest httpReq)\r\n at ServiceStack.Host.RestHandler.GetResponse(IRequest request, Object requestDto)\r\n at ServiceStack.Host.RestHandler.ProcessRequestAsync(IRequest httpReq, IResponse httpRes, String operationName)" } } &#39;到最后。但它在数据库中创建了一个新行,而不是更新现有的行。它是如何工作的?

使用GET,我没有实现错误。

[Route("/register")]
public class User : IReturn<UserResponse>
{
...
}

如何实施?我假设我认为用户是普通的Web服务实体?并创建&#39; UserService&#39;和请求,如:

one == two

但是没有像&#39; User&#39;由于表是由ServiceStack本身创建的,如何解决这个问题? 或者有什么我不知道的东西。感谢。

1 个答案:

答案 0 :(得分:0)

错误消息:

Could not find method named Get(Register) or Any(Register) on Service RegisterService

是说您尝试拨打内置ServiceStack Register服务而不是服务。但默认情况下,Register服务未启用,您的AuthFeature可能会明确启用它,或者使用:

Plugins.Add(new RegistrationFeature());

或者在AuthFeature上:

Plugins.Add(new AuthFeature(...) {
    IncludeRegistrationService = true
});

如果您不想启用ServiceStack的内置注册服务,则需要删除已启用的注册。

如果您希望在其他路径注册注册服务,则可以使用以下命令指定其他路由:

Plugins.Add(new RegistrationFeature {
    AtRestPath = "/servicestack-register"
});