如何伪造IIS中的目录列表? VirtualPathProvider适用于文件但是

时间:2013-02-25 06:55:37

标签: iis appfabric virtualpathprovider

我们正在使用AppFabric 1.1& IIS 8.0运行基于xamlx的工作流程。为了使静态xamlx文件消失,我们使用Ron Jacobs完美的示例代码将它们存储在数据库中,并通过VirtualPathProvider提供xamlx内容。

http://blogs.msdn.com/b/rjacobs/archive/2011/06/15/how-to-load-wf4-workflow-services-from-a-database-with-iis-appfabric.aspx

到目前为止,如果有人点击了正确的uri,就会提供xamlx文件。

但是现在AppFabric Dashboard没有机会收集和登记xamlx文件作为服务,因为它们不再对AppFabric可见。

目标必须是伪造目录列表并从db读取所有xamlx工作流名称。

我尝试通过以这种方式覆盖基于目录的方法来扩展VirtualPathProvider

    public override bool DirectoryExists(string virtualDir)
    {
        return base.DirectoryExists(virtualDir);
    }

    public override VirtualDirectory GetDirectory(string virtualDir)
    {
        if (IsPathVirtual(virtualDir))
        {
            return new VirtualDirectoryDecorator(base.GetDirectory(virtualDir));
        }
        else
        {
            return Previous.GetDirectory(virtualDir);
        }

    }

但这些方法并没有像我猜测的那样被调用。这是因为Uri没有扩展名,asp.net也没有被调用。

任何有助于使这个假目录列表发生的帮助!

由于

1 个答案:

答案 0 :(得分:1)

您需要修改web.config文件以指示IIS必须为每个请求调用ASP.NET,这是通过应用程序根目录中的<modules runAllManagedModulesForAllRequests="true" />属性完成的。

我认为您应该重命名您的问题,因为乍一看我认为您在内部使用VirtualPathProvider并希望隐藏IIS自动生成的目录内容列表页面。