Внутренняя ошибка сервера. в System. Net .WebClient.UploadValues ​​(адрес Uri, метод String, данные NameValueCollection) - PullRequest
0 голосов
/ 06 августа 2020

Я пытаюсь отправить запрос в Moodle API с помощью веб-клиента в asp. net и получаю ответ с этим веб-исключением.

"System.Net.WebException: The remote server returned an error: (500) Internal Server Error.\r\n   at System.Net.WebClient.UploadValues(Uri address, String method, NameValueCollection data)\r\n   at HSA.Moodle.API.Controllers.CourseController.duplicateCourse1(Duplicate_course duplicate) in C:\\_Projects\\HSA\\Projects\\ApiMoodle\\HSA.Moodle.API\\HSA.Moodle.API\\Controllers\\CourseController.cs:line 709

Это мой дочерний класс, унаследованный от веб-клиента:

public class WebClientWithTimeout:WebClient
{
    protected override WebRequest GetWebRequest(Uri address)
    {
        WebRequest wr = base.GetWebRequest(address);
        wr.Timeout = 900000; // timeout in milliseconds (ms)
        return wr;
    }
}

Я использую этот класс в методе ниже:

try
{
    WebClient wc1 = new WebClientWithTimeout();
    ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;

    wc1.QueryString.Add("wstoken", MoodleToken);
    wc1.QueryString.Add("wsfunction", "core_course_duplicate_course");
    wc1.QueryString.Add("moodlewsrestformat", "json");
    wc1.QueryString.Add("courseid", course_id.ToString());//course id of u want to duplicate(Curriculum id)
    wc1.QueryString.Add("fullname", duplicate.CourseName);//Name of the course
    wc1.QueryString.Add("shortname", duplicate.CourseShortName);//shortname of the course
    wc1.QueryString.Add("categoryid", category_id.ToString());//id of the created category
    System.Net.ServicePointManager.ServerCertificateValidationCallback = delegate (object sender, X509Certificate certificate, X509Chain chain, SslPolicyErrors sslPolicyErrors) { return true; };
    var response_data1 = wc1.UploadValues(URI, "POST", wc1.QueryString);
    var responseString = UnicodeEncoding.UTF8.GetString(response_data1);
    return responseString;
}
catch (WebException we)
{
    // add some kind of error processing
    return(we.ToString());
}
catch (Exception e)
{
    return "Exception Message :" + e.Message + ", Exception InnerException :" + e.InnerException + ", InnerException StackTrace :" + e.StackTrace;
}

Поэтому, пожалуйста, помогите мне решить эту проблему

...