如何在发送文件后检查IIS是否关闭了连接

时间:2016-02-04 23:33:51

标签: c# asp.net-web-api owin

我有一个网络应用程序,我通过实施Microsoft.Owin.FileSystems.IFileInfo

使用OWIN将文件发送到客户端
using System;
using System.IO;
using Microsoft.Owin.FileSystems;

public class CmsFileInfo : IFileInfo
{
    private readonly FileInfo _fileInfo;
    private readonly string _physicalPath;

    public CmsFileInfo(FileInfo fileInfo)
    {
        _fileInfo = fileInfo;
        _physicalPath = fileInfo.FullName;
        Name = fileInfo.Name;
        LastModified = fileInfo.LastWriteTimeUtc;
    }

    public Stream CreateReadStream()
    {
        return new FileStream(
            _physicalPath,
            FileMode.Open,
            FileAccess.Read,
            FileShare.Read,
            1024 * 64,
            FileOptions.SequentialScan);
    }

    public long Length
    {
        get { return _fileInfo.Length; }
    }

    public string PhysicalPath { get { return null; } }
    public string Name { get; private set; }
    public DateTime LastModified { get; private set; }
    public bool IsDirectory { get { return false; } }
}

对我来说,似乎工作正常。但后来我们在iTunes上遇到了一些问题。苹果支持者给了我以下答案:

  

当我们请求您的图片时,您的服务器似乎没有关闭连接。考虑将图像托管在不同的图像上,看看是否可以解决问题。

我们将播客图像移至azure,现在我正在发送302重定向。这解决了iTunes的问题。

但是:我如何关闭连接?如何测试服务器是否关闭了连接?我的IFileInfo实施有什么问题?

1 个答案:

答案 0 :(得分:0)

您可以使用Wireshark检查底层TCP连接是否已关闭。