Mając prosty test C# Jednostka:C# Http.Response Stream Zwraca pusty ciąg z application/json Content Type
[TestMethod]
public void JsonPostTest()
{
string testUri1 = "http://localhost:1293/Test/StreamDebug";
string testUri2 = "http://localhost:1293/Test/StreamDebug2?someParameter=abc";
string sampleJson = @"
{
""ID"": 663941764,
""MessageID"": ""067eb623-7580-4d82-bb5c-f5d7dfa69b1e""
}";
HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(testUri1);
EmailConfig config = GetTestConfigLive();
// Add postmark headers
request.Accept = "application/json";
request.ContentType = "application/json";
request.Method = "POST";
using (var outStream = new StreamWriter(request.GetRequestStream()))
{
outStream.Write(sampleJson);
}
// Get response
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
string resultText = "";
using (var reader = new StreamReader(response.GetResponseStream()))
{
resultText = reader.ReadToEnd();
}
Assert.Inconclusive();
}
i prosty zestaw działań MVC konsumować i echo zamieszczone dane z powrotem do testów jednostkowych (Zauważ, że kod w obu działań jest identyczny):
[HttpPost]
[ValidateInput(false)]
public ActionResult StreamDebug()
{
string postbody = "";
using (StreamReader reader = new StreamReader(Request.InputStream, Encoding.UTF8))
{
postbody = reader.ReadToEnd();
}
return this.Content(postbody);
}
[HttpPost]
[ValidateInput(false)]
public ActionResult StreamDebug2(string someParameter)
{
string postbody = "";
using (StreamReader reader = new StreamReader(Request.InputStream, Encoding.UTF8))
{
postbody = reader.ReadToEnd();
}
return this.Content(postbody);
}
gdybym dodawać do pierwszej akcji otrzymuję ciąg zawierający Wysłany json, czy mogę napisać do drugiej skargi dostaję pusty ciąg.
Aby sprawy były bardziej interesujące, jeśli zmienię typ zawartości w teście jednostki na "tekst/zwykły", obie czynności zwrócą oczekiwane wartości.
Czy ktoś może rzucić jakiekolwiek światło na to, dlaczego tak się dzieje?
Warto również zauważyć, że długość żądania w przypadku obu działań w obu okolicznościach wydaje się mieć odpowiednią długość.
Dalsze informacje o środowisku: Test jednostkowy znajduje się w osobnym projekcie testu MS. Akcje są w pustym projekcie MVC 4.0 (Net 4.0).
Dobrze zauważył pan. Sprawdzałem długość treści, ale nie sądziłem, że rozważę przeczytaną pozycję. Naprawdę pomocne informacje tam również. Bardzo zobowiązany. +1 (przepraszam, że mój przedstawiciel nie jest wystarczająco wysoki, aby oddać głos). –
Tak słodko, a ty dałeś nam juniorom możliwość wypróbowania tego –