将.ashx设置为Web应用程序的起始“页面”

时间:2009-01-18 00:05:03

标签: web-applications default ihttphandler

是否可以将.ashx文件设置为Web应用程序的起始(或默认)页面?如果是这样,它是如何完成的?

修改 - 一些不错的建议。我已将“Default.ashx”添加到IIS默认文档和网站上的“启用默认文档”,但是,它只显示目录列表,即使我已禁用目录浏览。

任何其他建议将不胜感激。 (IIS版本5.1)

修改 - 重新启动IIS,它可以正常运行。

问题 - 我是否也可以询问是否可以从Visual Studio 2005中将起始页面设置为.ashx?在执行此操作后,我似乎无法在Visual Studio中进行调试。

答案 - 在“应用程序属性”中,可以在“Web”选项卡下选择“开始操作”。实际上,它还允许选择使用哪个服务器/端口和调试器。很酷。

3 个答案:

答案 0 :(得分:5)

添加您的ASHX页面并确保将其移至列表顶部。

在IIS7中,您可以在web.config中指定它:

<system.webServer>
    <defaultDocument>
        <files>
            <clear />
            <add value="my_default_page.ASHX" />
        </files>
    </defaultDocument>
</system.webServer>    

this blog post

中的更多信息

编辑:正如@waves发现的那样,您可能需要在配置后重新启动IIS。


要禁用目录浏览,请取消选中“目录浏览”复选框:

答案 1 :(得分:0)

只需将它设置在IIS之类的默认应用程序服务器上,如果您要为ashx创建一个处理程序,则可以按照以下方式执行:

因此,首先要创建 rss.ashx

<!--WebHandler Language="C#" Class="KBMentor2.RSSHandler"-->

现在让我们来看看处理程序类:

RSSHandler.cs

namespace KBMentor2
{
    using System;
    using System.IO;
    using System.Web;


    public class RSSHandler : IHttpHandler
    {
        public void ProcessRequest (HttpContext context)
        {   
            context.Response.ContentType = "text/xml";
            context.Response.ContentEncoding = System.Text.Encoding.UTF8;

            string sXml = BuildXMLString(); //not showing this function, 
            //but it creates the XML string

            context.Response.Cache.SetExpires(DateTime.Now.AddSeconds(600));
            context.Response.Cache.SetCacheability(HttpCacheability.Public);
            context.Response.Write( sXml );
        }

        public bool IsReusable
        {
            get { return true; }
        }

    }

}

你有它。看起来非常像我们创建的第一个代码,不是吗?至于缓存,您可以通过从代码中访问Cache对象来解决它,请参阅context.Response.Cache调用。

代码的来源是:aspcode.net

答案 2 :(得分:0)

您可能只需要将'page'.ashx文件添加到IIS服务器设置中的默认文件列表中。您可能就像任何其他Web应用程序一样部署它。