Reputation: 23
I am in the process of updating some code to restharp 107. This specific code interfaces with a legacy website that does not have api's and essentially scrapes data from the user side.
The request I am making returns some data and redirects the user. in past versions of restsharp you would simply set FollowRedirects to false and you could read the response without redirecting. Upon upgrading to 107 it now throws an error and I can no longer read the response.
Here is the error
Exception Exception thrown: 'System.Net.Http.HttpRequestException' in System.Private.CoreLib.dll ("Request failed with status code Redirect") System.Net.Http.HttpRequestException
Here is the code
var options = new RestClientOptions($"{data.BaseUrl}/Admin/EditEmployee.aspx")
{
ThrowOnAnyError = false,
Timeout = 20000,
CookieContainer = data.Cookies,
UserAgent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:92.0) Gecko/20100101 Firefox/92.0",
FollowRedirects = false,
};
var client = new RestClient(options);
var request = new RestRequest();
request = request.AddHeader("Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8");
request = request.AddHeader("Accept-Language", "en-US,en;q=0.5");
request = request.AddHeader("Content-Type", "application/x-www-form-urlencoded");
request = request.AddHeader("Origin", $"{data.BaseUrl}");
request = request.AddHeader("Connection", "keep-alive");
request = request.AddHeader("Referer", $"{data.BaseUrl}/Admin/EditEmployee.aspx");
request = request.AddHeader("Cookie", $"TBHFORMAUTH={tbhformauth.Value}; ASP.NET_SessionId={sessionId.Value}");
request = request.AddHeader("Upgrade-Insecure-Requests", "1");
request = request.AddHeader("Sec-Fetch-Dest", "document");
request = request.AddHeader("Sec-Fetch-Mode", "navigate");
request = request.AddHeader("Sec-Fetch-Site", "same-origin");
request = request.AddHeader("Sec-Fetch-User", "?1");
request = request.AddHeader("Pragma", "no-cache");
request = request.AddHeader("Cache-Control", "no-cache");
request = request.AddHeader("TE", "trailers");
request = request.AddParameter("__EVENTTARGET", "");
request = request.AddParameter("__EVENTARGUMENT", "");
request = request.AddParameter("__VIEWSTATE", data.ViewState);
request = request.AddParameter("__VIEWSTATEGENERATOR", "68248626");
request = request.AddParameter("__EVENTVALIDATION", data.EventValidation);
request = request.AddParameter("ctl00_ctl00_westZone_mainMenu_Collapsed", "false");
request = request.AddParameter("ctl00_ctl00_westZone_mainMenu_SelIndex", "");
request = request.AddParameter("ctl00_ctl00_westZone_informationTablesMenu_Collapsed", "true");
request = request.AddParameter("ctl00_ctl00_westZone_informationTablesMenu_SelIndex", "");
request = request.AddParameter("ctl00_ctl00_westZone_marketingMenu_Collapsed", "true");
request = request.AddParameter("ctl00_ctl00_westZone_marketingMenu_SelIndex", "");
request = request.AddParameter("ctl00_ctl00_westZone_productsMenu_Collapsed", "true");
request = request.AddParameter("ctl00_ctl00_westZone_productsMenu_SelIndex", "");
request = request.AddParameter("ctl00_ctl00_westZone_APIManagementMenu_Collapsed", "true");
request = request.AddParameter("ctl00_ctl00_westZone_APIManagementMenu_SelIndex", "");
request = request.AddParameter("ctl00$ctl00$centerZone$ContentPlaceHolder1$tbxFirstName", firstName);
request = request.AddParameter("ctl00$ctl00$centerZone$ContentPlaceHolder1$tbxLastName", lastName);
request = request.AddParameter("ctl00$ctl00$centerZone$ContentPlaceHolder1$tbxLogin", userName);
request = request.AddParameter("ctl00$ctl00$centerZone$ContentPlaceHolder1$ddlRoles", "0");
request = request.AddParameter("ctl00$ctl00$centerZone$ContentPlaceHolder1$ddlDepartment", "10");
request = request.AddParameter("ctl00$ctl00$centerZone$ContentPlaceHolder1$newPassword1", password);
request = request.AddParameter("ctl00$ctl00$centerZone$ContentPlaceHolder1$newPassword2", password);
request = request.AddParameter("ctl00$ctl00$centerZone$ContentPlaceHolder1$btnSave", "Save");
request = request.AddParameter("ctl00_ctl00_LoginBlock1_PreventAutoCompleteUserName", "");
request = request.AddParameter("ctl00_ctl00_LoginBlock1_PreventAutoCompletePassword", "");
request = request.AddParameter("ctl00_ctl00_LoginBlock1_loginField", "");
request = request.AddParameter("passwordField", "");
request = request.AddParameter("ctl00_ctl00_LoginBlock1_gotoDashboard", "ctl00_ctl00_LoginBlock1_gotoDashboard");
request = request.AddParameter("ctl00$ctl00$centerZone$ContentPlaceHolder1$ddlCompany", "-1");
request = request.AddParameter("ctl00$ctl00$centerZone$ContentPlaceHolder1$phone$phoneExtension", "");
request = request.AddParameter("ctl00$ctl00$centerZone$ContentPlaceHolder1$phone$phone1", "");
request = request.AddParameter("ctl00$ctl00$centerZone$ContentPlaceHolder1$phone$phone2", "");
request = request.AddParameter("ctl00$ctl00$centerZone$ContentPlaceHolder1$phone$phoneExtension2", "");
request = request.AddParameter("ctl00$ctl00$centerZone$ContentPlaceHolder1$tbxSignature", "");
RestResponse response = await client.PostAsync(request);
Is there something new that needs to be done in order to read the initial response in addition to setting redirects to false? Or is this a possible issue with the new RestSharp update?
Upvotes: 0
Views: 3971
Reputation: 23
Looks like I figured it out shortly after...
By setting the method type in RestRequest and changing PostAsync to ExecuteAsync, it works as intended. Maybe someone could fill me in on why this behaves this way?
Upvotes: 2