我一直在使用XSP来成功托管我的ASP.Net MVC网站(.Net 4.5.1,Razor和WebForms的组合)。
但是,当我使用WebApi时,我遇到了一个问题(仅限XSP,而不是IIS): - 在阅读时,POST到重用连接所产生的请求流超时。
如果我在标题中设置“连接”:“关闭”,那么它工作正常,或者如果我将HTTP设置为其他任何1.1,它也可以工作(但是,我正在从浏览器发出请求,所以无法控制这些标题值)
为了测试这一点,我重写了标准的JSON格式:
public class JsonFormmatter : BufferedMediaTypeFormatter
{
public JsonFormmatter()
{
SupportedMediaTypes.Add(new MediaTypeHeaderValue("application/json"));
}
public override object ReadFromStream(Type type, Stream readStream, HttpContent content, IFormatterLogger formatterLogger)
{
return Deserialize(readStream, type);
}
public override void WriteToStream(Type type, object value, Stream writeStream, HttpContent content)
{
Serialize(value, writeStream);
}
public static void Serialize(object value, Stream s)
{
using (StreamWriter writer = new StreamWriter(s))
using (JsonTextWriter jsonWriter = new JsonTextWriter(writer))
{
JsonSerializer ser = new JsonSerializer();
ser.Serialize(jsonWriter, value);
jsonWriter.Flush();
}
}
public static object Deserialize(Stream s, Type type)
{
// READING JSON FROM THIS STREAM TIMES OUT!
using (StreamReader reader = new StreamReader(s, Encoding.Default, true, 100000, true))
using (JsonTextReader jsonReader = new JsonTextReader(reader))
{
JsonSerializer ser = new JsonSerializer();
return ser.Deserialize(jsonReader, type);
}
}
public override bool CanReadType(Type type)
{
return true;
}
public override bool CanWriteType(Type type)
{
return true;
然后,在App_Stat / WebApiConfig.cs中:
while (config.Formatters.Count > 0)
{
config.Formatters.RemoveAt(0);
}
config.Formatters.Add(new JsonFormmatter());
在从请求流反序列化时,将JSON发布到我的web api控制器上的操作时超时。
有人有什么想法吗?非常感激!