"You're going to have to stop or you're going to have to leave," McCain told the woman. When security guards approached to escort her out, he told her "Goodbye, see ya" to a round of applause.
After McCain opened it up to questioning, one man angrily pointed at him and asked the senator why he deserves a better health care plan than him.
"I'm trying to get it for you," McCain told him. "We'll do it for you. We'll make it affordable and available to you."
Other audience members in the crowd of 2,000 told McCain about their medical problems, such as HIV and multiple sclerosis.
McCain urged them he would fight for health care reform but reiterated his opposition to President Barack Obama's plan to create a government option to compete with private insurers, arguing that it would be the eventual end of private insurers in the U.S.
Obama and most Democrats say a government option would serve to balance the power of private insurers. But insurance companies see it as a step toward a government takeover, and many business groups agree.
When McCain was trying to answer questions from reporters after the town hall, one audience member yelled at him that he gets hundreds of thousands of dollars from insurance companies every year.
In a voice of feigned surprise, McCain said "Really? I didn't know that."
"There's more interest and involvement in this issue than I've ever seen in many years on a domestic issue," McCain said afterward. "There's obviously strong feeling and emotions on this issue and I think the town-hall meetings are a very important way to get people's viewpoints and allow them to deal directly with their elected representative."
The Democratic plan has repeatedly run into problems at such meetings. Throughout August, unruly opponents have tried to shout down lawmakers at local town hall meetings.
McCain also spoke against the proposal at a much more subdued town-hall meeting Tuesday in the retirement community of Sun City.
McCain canceled a Friday trip to Flagstaff so he can attend services for longtime colleague Sen. Edward M. Kennedy, who died Tuesday night.