我想允許用戶請求位於App_Data文件夾中的文件。這是錯誤:允許請求到App_Data
Error Summary
HTTP Error 404.8 - Not Found
The request filtering module is configured to deny a path in the URL that contains a hiddenSegment section.
我想允許用戶請求位於App_Data文件夾中的文件。這是錯誤:允許請求到App_Data
Error Summary
HTTP Error 404.8 - Not Found
The request filtering module is configured to deny a path in the URL that contains a hiddenSegment section.
它不可能App_Data
文件夾直接訪問,因爲它被用作數據存儲爲Web應用程序,你可以從它僅使用的ConnectionString訪問數據庫中的存儲數據的安全性的原因。
的web.config
<connectionStrings>
<add name="AddressBookConnectionString" connectionString="Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\myDB.mdf;Integrated Security=True;User Instance=True" providerName="System.Data.SqlClient"/>
</connectionStrings>
檢查這個http://www.codeproject.com/Articles/31557/A-Beginner-s-Guide-to-ASP-NET-Application-Folders#h
UPDATE
編程方式,我們可以訪問Web應用程序的任何文件,並將其寫入響應:
public class FileAccessHandler:IHttpHandler
{
public FileAccessHandler()
{
//
// TODO: Add constructor logic here
//
}
public bool IsReusable
{
get { return false; }
}
public void ProcessRequest(HttpContext context)
{
String FileName = Path.GetFileName(context.Request.PhysicalPath);
String AssetName = HttpContext.Current.Request.MapPath(Path.Combine(HttpContext.Current.Request.ApplicationPath, "App_Data/" + FileName));
if (File.Exists(AssetName))
{
context.Response.ContentType = "image/jpeg";
context.Response.BinaryWrite(File.ReadAllBytes(AssetName));
context.Response.End();
}
}
}
這是不推薦的應用程序的數據是爲應用程序文件,但是這可以通過添加以下行來
<system.webServer>
<security>
<requestFiltering>
<hiddenSegments>
<remove segment="app_data" />
</hiddenSegments>
</requestFiltering>
</security>
</system.webServer>
爲什麼你想做到這一點的配置來完成? – walther