Login mapping only works for the first query in a window
Considering that you are using the following SQL:

SELECT * FROM view EXECUTE AS LOGIN = 'loginname'


This is actually 2 different statements:

SELECT * FROM view;
EXECUTE AS LOGIN = 'loginname';


The SELECT statement doesn't have a clause to impersonate, you have to impersonate before issuing the SELECT statement and the impersonation remains on the current session until you execute a REVERT. So the proper SQL should have been:

EXECUTE AS LOGIN = 'loginname';
SELECT * FROM view;
REVERT; -- (if you want to revert to your original login)


As you mentioned in a comment, the error message was being generated by the view that you were querying, as it was using a linked server that wasn't correctly configured with a login against the remote server in which the impersonated login had access. If the current login is sysadmin, the linked server won't require a remote login-mapping mechanic (this can be configured), so the query always succeeded the first time.