1

我编写了一个 HttpHandler,当我在 ASP.NET 开发服务器上测试它时它工作得很好。

在我的 Web.Config 中,我有:

<add verb="*" path="Files.zip" type="MyNamespace.Zip, App_Code" />

在我的 App_Code 文件夹中的 Handler 中,我有以下代码。不幸的是,由于 ASP.NET 开发服务器将所有内容都转储到根目录中—— http://localhost:1234/Files.zip工作得很好。但是,我正在尝试部署到 URL 类似于http://myProjects/project的 Intranet 服务器。当我将浏览器指向http://myProjects/project/Files.zip 时,我得到一个 404。如何调整网络配置以获得正确的路径?还是其他地方的解决方案?我已经尝试在路径前加上“~/”和“./”。

(Namespace MyNamespace, file Zip.cs)
public void ProcessRequest(HttpContext context)
{
    context.Response.ContentType = "application/octet-stream";
    DirectoryInfo di = new DirectoryInfo(context.Server.MapPath("files"));
    FileInfo[] fileinf = di.GetFiles();
    ZipFile zip = new ZipFile();
    foreach(FileInfo fi in fileinf)
    {
        zip.AddFile(fi.FullName, "");
    }
    zip.Save(context.Response.OutputStream);
}
4

2 回答 2

2

您是否在您的 Intranet 服务器上的 IIS 中设置了映射,以便对 *.zip 的请求由 ASP.NET 运行时处理?如果没有,对 files.zip 的请求将永远不会到达您的处理程序。

如果您使用的是 IIS 6,此链接将帮助您设置 aspnet_isapi.dll 到 zip 扩展的映射。

http://www.microsoft.com/technet/prodtechnol/WindowsServer2003/Library/IIS/4c840252-fab7-427e-a197-7facb6649106.mspx?mfr=true

于 2009-07-28T18:43:17.430 回答
1

你试过了吗

path="/project/Files.zip"
于 2009-07-28T18:38:53.897 回答