C# WebApi文件读取访问被拒绝
我有一个WebApi应用程序,其目的是提供位于应用程序中的音频文件。它们存储在app_data/audio文件夹中 以下是我的检索方法:C# WebApi文件读取访问被拒绝,c#,.net,C#,.net,我有一个WebApi应用程序,其目的是提供位于应用程序中的音频文件。它们存储在app_data/audio文件夹中 以下是我的检索方法: public HttpResponseMessage Get(string file) { var path = String.Format("{0}{1}", HttpContext.Current.Server.MapPath(@"~/App_Data/Audio/"), file); try {
public HttpResponseMessage Get(string file)
{
var path = String.Format("{0}{1}", HttpContext.Current.Server.MapPath(@"~/App_Data/Audio/"), file);
try
{
var responseStream = new MemoryStream();
using (Stream fileStream = File.Open(path, FileMode.Open))
{
fileStream.CopyTo(responseStream);
fileStream.Close();
responseStream.Position = 0;
}
var response = new HttpResponseMessage
{
StatusCode = HttpStatusCode.OK,
Content = new StreamContent(responseStream)
};
response.Content.Headers.Add("content-type", "audio/basic");
response.Headers.CacheControl = new CacheControlHeaderValue()
{
Private = true
};
response.Content.Headers.Expires = null;
response.Headers.Pragma.Clear();
response.Content.Headers.ContentDisposition = new ContentDispositionHeaderValue("attachment")
{
FileName = file
};
return response;
}
catch (Exception e)
{
return Request.CreateErrorResponse(HttpStatusCode.NotFound, e.Message);
}
}
不幸的是,我遇到了以下错误:
“对路径“F:\Apps\AudioServeup\App\u Data\Audio\test.pcm”的访问被拒绝。”
我可以通过将AppPool标识设置为NetworkService,然后授予NetworkService写访问权限来解决此问题。嗯?不知道为什么我会要求这样做,因为NetworkService默认具有读取权限
有什么想法吗
谢谢 尝试
File.OpenRead(
而不是File.Open(
),因为这样可以确保打开文件时只请求读取权限。为读取而打开,而不是为读取/写入而打开。非常感谢您的帮助。