IIS 授权和限制

IIS Authorization and Restrictions

我试图限制匿名用户直接浏览到我网站上文件夹中的特定文件名(图像文件)。但是当我在文件夹上打开 "IIS Authentication" 功能时,匿名用户和网站应用程序都无法访问图像文件。

如何拒绝匿名用户访问文件(例如,如果用户输入绝对 url),但允许访问网站应用程序? (我认为也许 "IP Address and Domain Restrictions" 功能也可以使用,但无法让它工作)

我可以将图像文件移动到网站外部的文件夹中,但不确定如何在 .ImageUrl 中使用它 属性。

...颠簸

编辑 - 解决方案(将以下内容放入 .aspx 页面并将 ImageUrl 属性 设置为此页面,并使用任何需要的查询字符串参数):

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load

If (Request.QueryString("FileType") IsNot Nothing) And (Request.QueryString("FileName") IsNot Nothing) Then

Try
' Read the file and convert it to Byte Array
Dim filePath As String = UrlXlat(Request.QueryString("FileType") & "\")
Dim fileName As String = Request.QueryString("FileName")
Dim contentType As String = "image/" & Path.GetExtension(fileName).Replace(".", "")

Dim fs As FileStream = New FileStream(filePath & fileName, FileMode.Open, FileAccess.Read)      
Dim br As BinaryReader = New BinaryReader(fs)
Dim bytes As Byte() = br.ReadBytes(Convert.ToInt32(fs.Length))
br.Close()
fs.Close()

'Write the file to Reponse
Response.Buffer = True
Response.Charset = ""
Response.Cache.SetCacheability(HttpCacheability.NoCache)
Response.ContentType = contentType
Response.AddHeader("content-disposition", "attachment;filename=" & fileName)
Response.BinaryWrite(bytes)
Response.Flush()
Response.End()

Catch ex As Exception
response.write(ex):response.end
End Try

End If

End Sub

您可以将文件移动到站点根目录之外的文件夹或 App_Data 文件夹(该文件夹受到 ASP.NET 框架直接浏览的保护),然后设置您的ImageUrl 指向负责将文件传送到浏览器的通用处理程序(.ashx 文件)。您在处理程序中执行身份验证检查。

我写了一篇提供实现细节的文章:http://www.mikesdotnetting.com/article/122/simple-file-download-protection-with-asp-net