HTTP Post To Self для проверки обработчика - PullRequest
0 голосов
/ 19 января 2012

В настоящее время я работаю с универсальным обработчиком в asp.net. Я полагаю, что в настоящее время он находится в состоянии «прослушивания», ожидая POST. Я ожидаю POST с заголовком имени файла, и после получения обработчик будет заниматься загрузкой файла. Мой код обработчика ниже:

Sub ProcessRequest(Byval context as HttpContext) Implements IHttpHanlder.ProcessRequest

If context.Request.HttpMethod() = "POST" Then
Dim Reader as New StreamReader(context.Request.InputStream)
Dim contents as String = reader.ReadtoEnd()

Dim filename as String = context.Request.Headers(("filename"))
System.IO.File.Writealltext(ConfigurationManager.AppSettings("outputdirectory"), contents)
Else
context.Response.ContentType = "text/plain"
context.Response.ContentType("Handler is alive")
End If

End Sub

Я хотел бы повторить сообщение и посмотреть, успешно ли оно воспринимается. Можно ли было сгенерировать и отправить этот пост из другой программы на моей машине. Я попытался несколько учебных пособий, включая этот

SO - учебник POST

Я чувствую, что получил этот код ближе всего (по предыдущей ссылке)

Using wc as New System.Net.WebClient
wc.UploadFile("http://localhost:Port/local/of/handler", "C:\local\of\file.txt")
End Using

Я получаю ошибку 500 с удаленного сервера. Будет ли это проблемой с кодом обработчиков? Или я просто не делаю правильный тип POST?

Когда возиться с предложением wc.Headers () / Дарина, я все равно получаю ошибку 500. Исключение ниже.

System.Net.WebException: The remote server returned an error: (500) Internal Server Error
at System.Net.HttpWebRequest.GetResponse()
at System.Net.Webclient.GetWebResponse(WebRequest request)
at System.Net.WebClient.WebClientWriteStream.Dispose(Boolean disposing)
at System.IO.Stream.Close()
at System.IO.Stream.Dispose()
at TestPOSTGETEXE.Form1.Button4_Click(Object sender, EventArgs e) in C:\blah\blah\..\..\..\

1 Ответ

1 голос
/ 19 января 2012

Попробуй так:

Using wc As New System.Net.WebClient
    wc.Headers("filename") = "file.txt"
    Using writer = wc.OpenWrite("http://localhost:Port/local/of/handler")
        Dim file = System.IO.File.ReadAllBytes("C:\local\of\file.txt")
        writer.Write(file, 0, file.Length)
    End Using
End Using
...