Vb.net 使文件夹仅可供IIS7上登录的用户访问

Vb.net 使文件夹仅可供IIS7上登录的用户访问,vb.net,iis-7,download,access-control,Vb.net,Iis 7,Download,Access Control,我的网页上有一个子文件夹,其中包含pdf文件。 只有当用户已登录,登录信息通过Microsoft CRM访问,并且缓存中存储了一个变量时,才能访问它们。 代码是用vb.net编写的,Web服务器是IIS7。 如何阻止未登录用户访问此文件夹? 我一直在寻找一个解决方案,但还没有找到一个与CRM登录工作 我也一直在研究url重写,这样用户就看不到文件的直接路径(www.abc.com/download/test.pdf),而只能看到非描述性url(www.abc.com/pdf)。但这也没用 因此,

我的网页上有一个子文件夹,其中包含pdf文件。
只有当用户已登录,登录信息通过Microsoft CRM访问,并且缓存中存储了一个变量时,才能访问它们。
代码是用vb.net编写的,Web服务器是IIS7。

如何阻止未登录用户访问此文件夹? 我一直在寻找一个解决方案,但还没有找到一个与CRM登录工作

我也一直在研究url重写,这样用户就看不到文件的直接路径(www.abc.com/download/test.pdf),而只能看到非描述性url(www.abc.com/pdf)。但这也没用

因此,我愿意接受几乎所有的建议,但我不能复制整个用户库,也不能仅仅为了这个目的而设置sql数据库


Nicholas answer使用以下附加功能:


使用fs作为新的文件流(“C:\www\pdf\abc.pdf”, FileMode.Open)
Dim docSize As Long=fs.Length
Dim docStream(CInt(docSize))作为字节
fs.Read(docStream,0, CInt(docSize))
Response.ClearContent()
Response.ContentType=“application/pdf”
Response.AddHeader(“内容处置”、“内联;文件名=/_data/checkliste-4-2013-2.pdf”)
Response.AddHeader(“内容长度”,docSize.ToString())
Response.BinaryWrite(docStream)
Response.End()
结束使用


在我开发的web应用程序中,我们将PDF文件流式传输到浏览器。这样,没有人可以直接访问文件的URL,因为它是一个ASPX页面,我们可以应用任何我们想要的安全性(即用户必须登录)

下面是与我使用的类似的示例代码:

    Dim strFilePath As String = "C:\www\pdf\abc.pdf"
    Using fs As New System.IO.FileStream(strFilePath, System.IO.FileMode.Open)
        Dim docStream(fs.Length) As Byte
        fs.Read(docStream, 0, CInt(fs.Length))

        Response.ClearContent()
        Response.ContentType = "application/pdf"
        Response.AddHeader("Content-Disposition", "inline; filename=" + System.IO.Path.GetFileName(strFilePath))
        Response.AddHeader("Content-Length", fs.Length)
        Response.BinaryWrite(docStream)
        Response.End()
    End Using

这是可行的,但如果您已经解释了代码的功能(并且使用vb.net而不是c#),那就太好了。另外,如何解释strFilePath、docSize和docStream的来源?对于其他任何使用vb代码的人来说,这是我的问题。