Simply pass the currently authenticated user as parameter to your service layer. Never use HttpContext.User.Identity.Name
in your service layer.
For example:
[Authorize]
public ActionResult SomeAction()
{
string user = User.Identity.Name;
this.someService.SomeOperation(user);
...
}
Your service layer should never be tied to an HttpContext
.