Как использовать HTTP-запрос GET в C# с SSL? (нарушение протокола)

Измените ActionResult на JsonResult и верните объект Json.

[HttpPost]
        public JsonResult Details(int? id)
        {

            HomeModel model = new HomeModel();
            var book = db.Books.Where(b => b.Id == id).Include(b => b.Author).SingleOrDefault();
            if (book == null)
            {
                HttpNotFound();
            }

            book.DisplayNumber++;
            db.SaveChanges();
            model.bookDetails = book;
            return Json(model);
        }
9
задан 3 April 2009 в 16:17
поделиться

3 ответа

Переговоры HTTP по SSL используют правильно выпущенный сертификат для проверки.

Вы могли использовать делегата RemoteCertificateValidationCallback к проверке сертификата SSL следующим образом:

public static void ConnectSSL()
{

    WebRequest request = WebRequest.Create("https://" + sslServerHost + ":" + sslServerPort);
    request.Proxy = null;
    request.Credentials = CredentialCache.DefaultCredentials;

   //allows for validation of SSL certificates 

    ServicePointManager.ServerCertificateValidationCallback += new  System.Net.Security.RemoteCertificateValidationCallback(ValidateServerCertificate);

    HttpWebResponse response = (HttpWebResponse)request.GetResponse();
    Stream dataStream = response.GetResponseStream();
    StreamReader reader = new StreamReader(dataStream);
    string responseFromServer = reader.ReadToEnd();

}

//for testing purpose only, accept any dodgy certificate... 
public static bool ValidateServerCertificate(object sender, X509Certificate certificate, X509Chain chain, SslPolicyErrors sslPolicyErrors)
{
          return true; 
}
14
ответ дан 4 December 2019 в 12:21
поделиться

Просто идея, но Вы попробовали его финалом "/"? Также - Вы могли бы найти этот подход легче:

string s;
using(WebClient client = new WebClient()) {
    client.UseDefaultCredentials = true;
    s = client.DownloadString("https://" + sslServerHost + ":"
       + sslServerPort + "/");
}
2
ответ дан 4 December 2019 в 12:21
поделиться

Here is some test code that I have used successfully for testing SSL connections...

HttpWebRequest request = (HttpWebRequest)WebRequest.Create("https://www.dscoduc.com");
//request.Method = "HEAD";
//request.AllowAutoRedirect = false;
request.Credentials = CredentialCache.DefaultCredentials;

// Ignore Certificate validation failures (aka untrusted certificate + certificate chains)
ServicePointManager.ServerCertificateValidationCallback = ((sender, certificate, chain, sslPolicyErrors) => true); 

HttpWebResponse response = (HttpWebResponse)request.GetResponse();
Stream resStream = response.GetResponseStream();
StreamReader reader = new StreamReader(resStream);
string responseFromServer = reader.ReadToEnd();
1
ответ дан 4 December 2019 в 12:21
поделиться
Другие вопросы по тегам:

Похожие вопросы: