Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/336.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# WebApi文件读取访问被拒绝_C#_.net - Fatal编程技术网

C# WebApi文件读取访问被拒绝

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 {

我有一个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);
        }
    }
不幸的是,我遇到了以下错误:

“对路径“F:\Apps\AudioServeup\App\u Data\Audio\test.pcm”的访问被拒绝。”

我可以通过将AppPool标识设置为NetworkService,然后授予NetworkService写访问权限来解决此问题。嗯?不知道为什么我会要求这样做,因为NetworkService默认具有读取权限

有什么想法吗


谢谢

尝试
File.OpenRead(
而不是
File.Open(
),因为这样可以确保打开文件时只请求读取权限。

为读取而打开,而不是为读取/写入而打开。非常感谢您的帮助。