В нашем случае проблема была вызвана вызовом веб-сервиса с использованием метода запроса OPTIONS (вместо GET или POST).
Мы до сих пор не знаем, почему проблема возникла внезапно. Веб-сервис отлично работал в течение 5 лет как по HTTP, так и по HTTPS. Мы единственные, кто использует веб-сервис, и он всегда использует POST.
Недавно мы решили сделать сайт, на котором размещен только веб-сервис SSL. Мы добавили правила перезаписи в Web.config, чтобы преобразовать любой HTTP в HTTPS, развернули и сразу же начали получать, помимо обычных запросов GET и POST, запросы OPTIONS. Запросы OPTIONS вызвали ошибку, обсуждаемую в этом сообщении.
Остальная часть приложения работала на отлично. Но мы продолжали получать сотни сообщений об ошибках из-за этой проблемы.
Есть несколько постов (например, в этом ), в которых обсуждается, как обрабатывать метод OPTIONS. Мы пошли для обработки запроса OPTIONS непосредственно в Global.asax. Это сделало проблему исчезнуть.
protected void Application_BeginRequest(object sender, EventArgs e)
{
var req = HttpContext.Current.Request;
var resp = HttpContext.Current.Response;
if (req.HttpMethod == "OPTIONS")
{
//These headers are handling the "pre-flight" OPTIONS call sent by the browser
resp.AddHeader("Access-Control-Allow-Methods", "GET, POST");
resp.AddHeader("Access-Control-Allow-Headers", "Origin, Content-Type, Accept, SOAPAction");
resp.AddHeader("Access-Control-Max-Age", "1728000");
resp.End();
}
}