我正在尝试内置的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本身创建的,如何解决这个问题? 或者有什么我不知道的东西。感谢。
答案 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"
});