Сбор информации на стороне клиента с помощью модели и контроллера с помощью специального API приводит к ошибке сервера 5C#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 Сбор информации на стороне клиента с помощью модели и контроллера с помощью специального API приводит к ошибке сервера 5

Сообщение Anonymous »

У меня есть тест, в котором мне нужно собрать некоторые действия пользователя и затем сохранить их в базе данных, но я сталкиваюсь с внутренней ошибкой сервера 500, возможно, мои настройки неверны, или я пока что-то делаю неправильно, это я впервые делаю больше серверной части.
Для этого я создаю модель QuizResultsModel.cs:

Код: Выделить всё

namespace Quiz.Model
{
public class QuizResultsModel
{
public int UserId { get; set; }
public int Score { get; set; }
public int SuccessCount { get; set; }
public int FailCount { get; set; }
public DateTime DateAttempted { get; set; }
public TimeSpan TimeTaken { get; set; }
}
}
Контроллер QuizResultsController:

Код: Выделить всё

namespace Quiz.Controllers
{
[RoutePrefix("someapi/Quiz")]
public class QuizResultsController : ApiController
{
[HttpPost]
[Route("SaveQuizResults")]
public IHttpActionResult SaveQuizResults(QuizResultsModel quizResult)
{
var result = QuizService.SaveQuizResult(quizResult);
return Ok(result);
}
}
}
Класс для выполнения SQL-запроса, QuizService.cs:

Код: Выделить всё

namespace Quiz.Service
{
public class QuizService
{
public static ResponseStatus SaveQuizResult(QuizResultsModel quizResult)
{
ResponseStatus responseStatus = new ResponseStatus();
string sql = @"INSERT INTO QuizResults (UserId, SuccessCount, FailCount, Score, DateAttempted, TimeTaken)
VALUES (@UserId, @SuccessCount, @FailCount, @Score, @DateAttempted, @TimeTaken);
SELECT SCOPE_IDENTITY();";

try
{
using (var connection = new SqlConnection(Database.CreateConnection().ConnectionString))
using (var command = new SqlCommand(sql, connection))
{
command.Parameters.AddWithValue("@UserId", quizResult.UserId);
command.Parameters.AddWithValue("@SuccessCount", quizResult.SuccessCount);
command.Parameters.AddWithValue("@FailCount", quizResult.FailCount);
command.Parameters.AddWithValue("@Score", quizResult.Score);
command.Parameters.AddWithValue("@DateAttempted", quizResult.DateAttempted);
command.Parameters.AddWithValue("@TimeTaken", quizResult.TimeTaken);

connection.Open();
var quizResults = command.ExecuteScalar();
responseStatus.HttpStatusCode = HttpStatusCode.OK;
responseStatus.HttpStatusMessage = "Quiz result saved successfully " + quizResults;
}
}
catch (Exception ex)
{
responseStatus.HttpStatusCode = HttpStatusCode.InternalServerError;
responseStatus.HttpStatusMessage = ex.Message;
}

return responseStatus;
}
}
}
Также нам необходимо зарегистрировать API на платформе QuizRegistration.cs:

Код: Выделить всё

namespace Quiz.App_Start
{
public class QuizRegistration : APIRegistrationBase
{
protected override List ControllerVersions => new List()
{
nameof(QuizResultsController)
};

protected override string CurrentControllerVersion => nameof(QuizResultsController);

protected override string ControllerName => "Quiz";
}
}
Редактирование с помощью кода Javascript

Код: Выделить всё

function saveQuizMetricsData(){
fetch('/dwapi/Quiz/SaveQuizResults', {
method: 'POST',
body: JSON.stringify({
QuizId: 1,
UserId: 2,
SuccessCount: 1,
FailCount: 0,
Score: 75,
DateAttempted: '10/23/2024',
TimeTaken: '01:22'
}),
headers: {
'Content-Type': 'application/json'
},
})
.then(response =>  response.json())
.then((data) => {
console.log(data)
})
.catch(error => {
console.log(error)
})
.finally(() => {
console.log('data saved into database')
});
}
Может быть, моя переменная подключения не получает учетные данные подключения к базе данных, или это неправильный способ настройки MVC?< /п>

Подробнее здесь: https://stackoverflow.com/questions/791 ... results-in
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C#»