BOONE, N.C. — It had been five years and a day since the last time a Louisiana-Lafayette season ended without a bowl game.

That streak is over.

The Ragin’ Cajuns managed just 246 yards of offense and didn’t score until a final, meaningless drive. Appalachian State was imperfect but inevitable, ending the Cajuns’ slim bowl hopes with a dominant 28-7 win Saturday at Kidd Brewer Stadium.

“This year has not gone the way you wanted it to go,” Cajuns coach Mark Hudspeth said. “Some years it happens that way, unfortunately. But we’ve learned a lot about the team, we’ve learned a lot about the things we do well and we’ve also learned a lot about the deficiencies that we’ve got to address.”

Appalachian State (9-2, 5-1 Sun Belt) took the lead on the Cajuns (4-7, 3-4) with a Marcus Cox 9-yard touchdown run five minutes into the game.

The Mountaineers started with great field position after Tre’maine Lightfoot was hit with an unsportsmanlike conduct penalty after he leveled Appalachian State punt returner Bobo Beathard. Starting at its 45-yard line, Appalachian State needed only six plays to score, but the touchdown came on fourth-and-1 from the Cajuns’ 9-yard line.

“Penalties hurt us early,” Hudspeth said. “I told the team, ‘You wonder why we’re not very good? Because we’ve got them backed up near the 30; now that turns and gives them the ball near midfield.’ That changes everything.”

The Mountaineers’ next drive was more methodical. Keyed by four third-down conversions, Appalachian State drove 80 yards in 15 plays, draining more than six minutes off the clock. Cox punctuated that drive with his second rushing score of the game.

“We’ve just got to learn how to get off the field on third down, third-and-long, third-and-short,” sophomore defensive tackle Taboris Lee said. “We just seem to shoot ourselves in the foot.”

The Mountaineers were primed to make it three in a row on their next drive to take a commanding lead on the Cajuns, but quarterback Taylor Lamb made a rare mistake deep inside Cajuns territory.

Lamb took a snap from the 21-yard line and ran to his left on a designed option. What he didn’t realize was that his option man, Simms McElfresh, ran to the right. Lamb blindly pitched to the man who wasn’t there, and the ball was scooped up by Travis Crawford and returned to the Mountaineers’ 47-yard line.

The next Appalachian State drive also ended with a fumble in Cajuns territory, which the Cajuns recovered at their 34.

The problem was the Cajuns offense couldn’t muster much of anything. Two crucial sacks wrecked their chances.

When they took over after Lamb’s fumble, the Cajuns drove to the 31, where they faced third-and-6. But Mountaineers linebacker John Law stormed right through the middle of the Cajuns line to drop quarterback Brooks Haack for a 9-yard loss to force a punt.

After the second fumble, the Cajuns looked sharper, driving inside the Appalachian State 10-yard line with less than a minute remaining. But Haack held onto the ball too long and was dropped for an 8-yard loss by Ronald Blair. Stevie Artigue’s 36-yard field-goal attempt was not anywhere close, sending the Cajuns to the locker room scoreless at halftime for the first time since the 2013 South Alabama game.

“It’s very, very frustrating,” said Haack, who was 13-of-22 for 128 yards. “When you have a defense that comes out and forces two turnovers, you’ve got to expect to turn those into seven points. We didn’t capitalize on either one of them.”

With the Cajuns offense failing to rise to the occasion, Appalachian State rediscovered its early form in the second half.

Midway through the third quarter, running back Jalin Moore ran nearly untouched through the middle of the Cajuns defense, shrugging off a weak tackle attempt by safety Tracy Walker and racing 54 yards to the end zone to put Appalachian State ahead 21-0.

The Cajuns’ only score of the game came in the final minute, with redshirt freshman quarterback Jordan Davis capping a 75-yard drive with a 20-yard touchdown run.

The Cajuns will wrap up their season much earlier than they expected next week against Troy at Cajun Field. Though the postseason goals are up in smoke, Hudspeth insisted there’s still something to play for.

“We’ve got another home game,” he said. “We want to win every home football game. We want to send our seniors out with a win. This senior class has never lost to Troy; they want to finish with a win.”