Здравствуйте, не могу разобраться в чем заключается проблема, каким образом можно решить данную ситуацию? Исключение появляется при подключении через браузер к этому, если можно так выразиться, серверу.
Описание исключения:
Необработанное исключение типа "System.InvalidOperationException" в System.dll
Дополнительные сведения: Эта операция не может быть выполнена после передачи отклика.
Stack Trace:
в System.Net.HttpListenerResponse.set_ContentLength64(Int64 value)
в WEB_Server.ChildThread.Connections(Boolean isListening, HttpListenerContext context) в E:\Visual Studio\Projects\WEB-Server\WEB-Server\Source Code\ChildThread.cs:строка 38
в WEB_Server.Program.<>c.b__9_0() в E:\Visual Studio\Projects\WEB-Server\WEB-Server\Source Code\Program.cs:строка 59
в System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
в System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
в System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
в System.Threading.ThreadHelper.ThreadStart()
Создание отдельного потока реализовано таким образом:
_t = new Thread(()=> ChildThread.Connections(_server.IsListening, _server.GetContext()));
_t.Start();
Класс содержащий цикл:
using System.Net;
using System.Text;
namespace WEB_Server
{
internal class ChildThread : Program
{
internal static void Connections(bool isListening, HttpListenerContext context)
{
while (isListening)
{
if (!Flag)
{
SwitchOff_Server();
break;
}
var request = context.Request;
if (request.HttpMethod == "POST")
{
FileIO.logHandler(request);
ShowRequestData(request);
if (!Flag) return;
}
const string responseString = @"<!DOCTYPE HTML>
<html><head></head><body>
<form method=""post"" action=""say"">
<p><b>Name: </b><br>
<input type=""text"" name=""myname"" size=""40""></p>
<p><input type=""submit"" value=""send""></p>
</form></body></html>";
var response = context.Response;
response.ContentType = "text/html; charset=UTF-8";
var buffer = Encoding.UTF8.GetBytes(responseString);
response.ContentLength64 = buffer.Length; // <=== в этом месте проявляется исключение при подключении через браузер
using (var output = response.OutputStream)
{
output.Write(buffer, 0, buffer.Length);
}
}
}
}
}