gpt4 book ai didi

c# - WebApi 文件读取访问被拒绝

转载 作者:行者123 更新时间:2023-11-30 22:04:44 26 4
gpt4 key购买 nike

我有一个 WebApi 应用程序,其目的是提供位于应用程序内的音频文件。它们存储在 app_data/audio 文件夹中。

这是我的检索方法:

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);
}
}

不幸的是,我得到了这个错误:

"Access to the path 'F:\Apps\AudioServeup\App_Data\Audio\test.pcm' is denied."

我可以通过将 AppPool 标识设置为 NetworkService,然后授予 NetworkService 写入权限 来解决此问题。嗯?不确定为什么我会要求它,因为默认情况下 NetworkService 具有读取权限。

有什么想法吗?

谢谢!

最佳答案

尝试使用 File.OpenRead( 而不是 File.Open(,因为这将确保它在打开文件时仅请求读取访问权限。

关于c# - WebApi 文件读取访问被拒绝,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24964426/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com