You cannot call Vuser_init() or _exit() from within your action section. You can, however, create new independent functions which contain your connection and disconnect code and reference those using standard C calling conventions from within your action section.
Sorry James, you can call vuser_init or vuser_end from within actions.
You can just code
wherever you need in your action code.
Obviously, they will be executed at the start and end of script execution as usual, but (for example) if you need to call them to sign-off and sign back in to get around some funky errors, you can clean up your session before continuing.
Yes, true, but it extremely rare where it would make any sort of logical sense to do so. If you need to repeatedly call a set of code then move it out of vuser_init() or vuser_end() which are controlled by the controller and are designed to be executed in the init pghase of the virtual user and at after the execution of the virtual user stop (by time, user input or exhaustion of data).
Structurally, we need to be aware of what the vuser_init() and vuser_end() are used for in a LoadRunner context. You're not going to change how LoadRunner operates, but you can change how you reference code repeatedly by pulling it out into your own functions to call.