Префикс: К сожалению, переписать эти классические страницы ASP в ASP.NET нельзя. Это сложное унаследованное приложение, которое мы поддерживаем.
У меня проблемы с получением HttpWebRequest
для POST на странице Classic ASP в том же веб-приложении. Страница работает быстро и правильно в браузере.
Ожидаемый результат:
HttpWebRequest
должен POST к странице и получить результат HTML.
Фактический результат:
HttpWebRequest
ожидает 100-секундный тайм-аут по умолчанию и затем завершается неудачей.
Сообщение об ошибке:
System.Net.WebException
HResult=0x80131509
Message=The operation has timed out
Вещи, которые я пробовал:
- Добавлен
CookieContainer
, как предложено здесь - Wrapped
HttpWebResponse
в блоке Using
, как предлагалось здесь - Попытка проверки HTTP-трафика с помощью Telerik Fiddler (трафик не был записан для запроса)
Чтобы исключить саму страницу ASP в качестве виновника, ее содержание уменьшено до минимума:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>Page</title>
</head>
<body>
<p>This is the page.</p>
</body>
</html>
Вот код: (Сбой в строке 32, GetResponse()
)
---------------------------------------------------
Generic Handler: SignIn.ashx
---------------------------------------------------
1 Imports System.Net
2
3 Public Class Labels
4 Implements IHttpHandler
5
6 Sub ProcessRequest(Context As HttpContext) Implements IHttpHandler.ProcessRequest
7 Dim oFormData As NameValueCollection
8 Dim oResponse As HttpWebResponse
9 Dim sResponse As String
10 Dim aPostData As Byte()
11 Dim oRequest As HttpWebRequest
12 Dim sUrl As String
13
14 sUrl = "http://domain.local/signin.asp"
15
16 oFormData = HttpUtility.ParseQueryString(String.Empty)
17 oFormData.Add("username", "username")
18 oFormData.Add("password", "password")
19
20 aPostData = Encoding.ASCII.GetBytes(oFormData.ToString)
21
22 oRequest = WebRequest.Create(sUrl)
23 oRequest.AllowAutoRedirect = False
24 oRequest.ContentLength = aPostData.Length
25 oRequest.ContentType = "application/x-www-form-urlencoded"
26 oRequest.Method = WebRequestMethods.Http.Post
27
28 Using oStream = oRequest.GetRequestStream
29 oStream.Write(aPostData, 0, aPostData.Length)
30 End Using
31
32 oResponse = oRequest.GetResponse
33
34 Using oReader As New StreamReader(oResponse.GetResponseStream)
35 sResponse = oReader.ReadToEnd
36 End Using
37 End Sub
38
39 ReadOnly Property IsReusable() As Boolean Implements IHttpHandler.IsReusable
40 Get
41 Return False
42 End Get
43 End Property
44 End Class
Как я могу отладить это и определить, что происходит? (Обратите внимание, что статические страницы HTML загружаются очень хорошо, а также файлы ASPX и ASHX. Это происходит только со страницами Classic ASP.)