3

I'm calling RegistrationService::Post from another ServiceStack service via Service::ResolveService, however I'm getting the following response back:

{ "ResponseStatus": { "ErrorCode": "NullReferenceException", "Message": "Object reference not set to an instance of an object.", "StackTrace": "[AddUser: 12/10/2013 5:06:09 PM]:\n[REQUEST: {Email:john@aol.com,Password:password1}]\nSystem.NullReferenceException: Object reference not set to an instance of an object.\r\n at ServiceStack.ServiceInterface.ServiceExtensions.GetSession(Service service, Boolean reload)\r\n at ServiceStack.ServiceInterface.Auth.RegistrationService.Post(Registration request)\r\n at JostRunning.Services.ServiceInterface.BL.UsersService.Post(AddUser request) in c:\GitRepositories\JostRunning\JostRunning.Services\ServiceInterface\BL\UsersService.cs:line 90\r\n at lambda_method(Closure , Object , Object )\r\n at ServiceStack.ServiceHost.ServiceRunner`1.Execute(IRequestContext requestContext, Object instance, TRequest request)", "Errors": [] } }

It looks like there is a problem in Service::GetSession, perhaps with a null RequestContext, but I'm not quite sure how this is happening. If I make the same post to /register, everything works as expected. I wouldn't think adding a pass through call on top of that post would cause an exception.

Edit - I've confirmed that the HttpRequestContext on the service is null when calling GetSession via resolved RegistrationService.

public static IAuthSession GetSession(this Service service, bool reload = false)
{
    var req = service.RequestContext.Get<IHttpRequest>();
    if (req.GetSessionId() == null)
        service.RequestContext.Get<IHttpResponse>().CreateSessionIds(req);
    return req.GetSession(reload);
}

Furthermore, after throwing a this.GetSession() in another "service calling resolved service" method, I get the same NullReferenceException.

Is there a step to initialize the request context that needs to be taken prior to making resolved service calls?

Resolved-ish - After poking around a bit more, I surmised that since I have one service calling another, the RequestContext wasn't making it's way to the RegistrationService where it was being used. Setting Service::RequestContext to the calling service's RequestContenxt rior to making the resolved service method call has resolved this issue (but it sure seems hacky).

Jason Castellano
  • 333
  • 4
  • 11
  • possible duplicate of [What is a NullReferenceException and how do I fix it?](http://stackoverflow.com/questions/4660142/what-is-a-nullreferenceexception-and-how-do-i-fix-it) –  Mar 26 '15 at 19:06

0 Answers0