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

本文关键字:是否 文件 连接 何检查 检查 IIS | 更新日期: 2023-09-27 18:33:21

>我有一个 Web 应用程序,我在其中使用 OWIN 通过实现Microsoft.Owin.FileSystems.IFileInfo将文件发送到客户端

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 实现有什么问题?

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

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