C# 在Windows Universal应用程序中播放(背景)音频失败

C# 在Windows Universal应用程序中播放(背景)音频失败,c#,wpf,win-universal-app,background-audio,C#,Wpf,Win Universal App,Background Audio,我想在UniversalWindowsApp中播放一些音频文件给那些我只知道路径的人。这是我当前的代码: //exception in this line: var file = await StorageFile.GetFileFromPathAsync(@"C:\Users\myuser\Music\someartist\album\01. Title.mp3"); var stream = await file.OpenAsync(Windows.Storage.FileAccessMo

我想在
UniversalWindowsApp
中播放一些音频文件给那些我只知道路径的人。这是我当前的代码:

//exception in this line:
var file = await StorageFile.GetFileFromPathAsync(@"C:\Users\myuser\Music\someartist\album\01. Title.mp3");

var stream = await file.OpenAsync(Windows.Storage.FileAccessMode.Read);
mediaControl.SetSource(stream, file.ContentType);
mediaControl.Play();
我还尝试了以下代码片段:

mediaControl.Source = new Uri(@"C:\Users\myuser\Music\someartist\album\01. Title.mp3", UriKind.RelativeOrAbsolute);
但这两种代码都会引发如下异常:

访问被拒绝。(HRESULT异常:0x80070005(E_访问被拒绝))

它实际上并不位于第一行(意味着它会立即跳转到
未处理的异常
),因为它会中断到中间行(从
App.g.i.cs
/
InitializeComponent()
)复制):

如果我使用它工作的示例代码:

async private void SetLocalMedia()
{
    var openPicker = new Windows.Storage.Pickers.FileOpenPicker();
    openPicker.FileTypeFilter.Add(".mp3");
    var file = await openPicker.PickSingleFileAsync();

    // mediaControl is a MediaElement defined in XAML
    if (null != file)
    {
        var stream = await file.OpenAsync(Windows.Storage.FileAccessMode.Read);
        mediaControl.SetSource(stream, file.ContentType);
        mediaControl.Play();
    }
}
这显然与我的相同,除了
FileOpenPicker
——一个我不会出现的对话框,因为我已经有了文件路径

问题是,如何在
UniversalWindowsApp
中播放一些音频


提前谢谢

您需要了解Windows应用商店应用程序中的文件访问和权限

例外情况明确表示您无权访问该文件。对于
File.Open
FileStream
您可以使用各种选项打开文件,这些选项可以提供正确的访问权限,但所谓的
StorageFile.getfilefrompathsync
没有任何选项。这意味着你不能坚持那种方法。
async private void SetLocalMedia()
{
    var openPicker = new Windows.Storage.Pickers.FileOpenPicker();
    openPicker.FileTypeFilter.Add(".mp3");
    var file = await openPicker.PickSingleFileAsync();

    // mediaControl is a MediaElement defined in XAML
    if (null != file)
    {
        var stream = await file.OpenAsync(Windows.Storage.FileAccessMode.Read);
        mediaControl.SetSource(stream, file.ContentType);
        mediaControl.Play();
    }
}