Republicans are deciding Tuesday who should carry their party's banner in avacant since last year's election was deemed tainted by fraud.
Republican and unaffiliated voters in the 9th Congressional District cast ballots in person after two weeks of early voting to decide which GOP candidate will face Democrat Dan McCready.
The general election will be Sept. 10 if one candidate collects more than 30 percent of the votes in Tuesday's primary. If no one tops that milestone, that September date will be used for a runoff between the top two Republicans and the general election will be Nov. 5.
The special election wasused a political operative who improperly handled mail-in ballots. Harris, who narrowly led after November's votes were counted, opted not to run again. McCready is running unopposed.
The top candidates in the GOP primary include Harris' endorsed candidate, a former Democrat who helped defeat an incumbent Republican for state Supreme Court last year, and a state legislator who sponsored legislation in 2016 voiding anti-discrimination protections for LGBT people.
Catawba College professor Michael Bitzer is projecting voter turnout of 10% to 15%. He analyzed early voters and found their average age was 64, almost 20 years higher than the district's average for registered unaffiliated and Republican voters.
State Sen. Dan Bishop, who in 2016 sponsored the so-called "bathroom bill," raised the most in campaign contributions, seeded with $250,000 from the Charlotte attorney's own bank account.
Real estate agent Leigh Brown was backed by more than $1 million from a national political action committee representing Realtors. Chris Anglin, the former Democrat, was barred from GOP debates and failed in a lawsuit to force the state Republican Party to share internal data with him.
Union County Commissioner Stony Rushing, who said he was named for a Flintstones cartoon character, produced an ad in which he donned rubber boots and wrapped a snake around his neck to underline his promise to "drain the swamp" in Washington.
Bucking the Republican Party was a big theme throughout the GOP primary, with candidates calling party leaders in Washington and Raleigh spineless or corrupt.
Matthrew Ridenhour, a former county commissioner and Marine who lives in Charlotte, said he refused to pay heed when party authorities urged him to stay out of the race.
"It's our time. It's time for all the people who are sick of the same old, same old establishment smoke and mirrors game. And we as the American people feel like we're getting played. That's who I am," he said during a GOP debate last week.
The GOP's brand has suffered in the, followed last month by federal charges accusing the state party's chairman of working with a big-money donor to try bribing North Carolina's top insurance regulator.
"Folks actually do bring this up," Ridenhour said. "What's going on with the GOP? What happened to your GOP chairman? What's going on there with these donors? Are you involved in that? Did you take any money from that donor? I did not. But that's a question that comes up often."
Candidates have differentiated themselves by focusing on their personal narratives but have been largely unanimous in their support for President Donald Trump and gun rights, and opposition to abortion and left-wing Democrats they contend are vanguards of socialism.
Half the candidates live outside the 9th district, which is allowed, but which Ridenhour and others dismissed as opportunism.
The congressional district stretches from suburban Charlotte to suburban Fayetteville along the South Carolina border. It has been in GOP hands since 1963 and President Donald Trump won it by 12 percentage points in 2016.