ASP. Net Ответ пуст, если я не добавляю пробел перед выводом - PullRequest
2 голосов
/ 02 мая 2020

У меня странная проблема, и ничего особенного. Вывод не будет отправлен в браузер, пока я не добавлю пробел перед выводом. Я обнаружил «обходной путь» при попытке сделать вывод = «тест». Я просто пытаюсь отобразить html часть почтового сообщения как веб-страницу. Если я скопирую значение переменной «output» и сохраню как. html, браузер файлов отобразит его. Проблема в том, что данные не отправляются в браузер из iis express.

Обновление : БОЛЬШОЙ КЛЮЧ: Я получил эту проблему только в одном указанном c почтовом сообщении (возможно, другие тоже) и у многих сообщений проблем нет. Это может быть связано с выходной кодировкой по умолчанию UTF-8 против non-utf8, я не уверен. html часть кодировки символов сообщения - ISO-8859-9 (Turki sh), но вывод - обычная переменная string . Я преобразовал строку output в двоичный поток и исследовал числа ascii, в двоичном значении строки нет невидимых байтов.

Код:

// output = " " + output;   // OK: Browser displays html page as expected
// output += " ";           // Not OK: No data at browser
// output = "test";         // OK: Browser displays text "test"
Response.Write(output);     // Without modification no data at browser

Экран отладчика:

enter image description here

Все заголовки браузера выглядят нормально, я получил ответ, но он пуст:

enter image description here

Ответ пуст, когда первый символ не является пробелом:

enter image description here

Ответ в порядке, когда я добавляю пробел в качестве первого символа:

enter image description here

В начале исходного кода веб-страницы вместо пробела появляется неожиданный перевод строки:

enter image description here

Визуализатор текста отладчика до изменения вывода:

enter image description here

Визуализатор текста отладчика после изменения вывод:

enter image description here

Вопрос: Почему вывод строки не отправляется в браузер здесь?

1 Ответ

0 голосов
/ 02 мая 2020

Пожалуйста, попробуйте следующее, чтобы решить вашу проблему

Вы можете использовать contentResult, чтобы сделать это ... как

[HttpGet]
public ContentResult Index() 
{
    return new ContentResult 
    {
        ContentType = "text/html",
        Content =@yourHtmlLink
    };
}

или

 public HttpResponseMessage Get()
        {
            var response = new HttpResponseMessage();
            response.Content = new StringContent("<div>Hello World</div>");
            response.Content.Headers.ContentType = new MediaTypeHeaderValue("text/html");
            return response;
        }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...