在mono xsp中托管的web api的多个POST超时

时间:2016-11-08 18:58:37

标签: asp.net-web-api mono xsp

我一直在使用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控制器上的操作时超时。

有人有什么想法吗?非常感激!

0 个答案:

没有答案