首页 > 解决方案 > 错误:不允许文件操作。拒绝访问路由

问题描述

我正在开发一个使用 Silverlight 的项目,我想在其中显示服务器路径的 PDFS 文件,但是当我开始调试我的代码时,我发现以下异常:

在此处输入图像描述

我在以下代码中生成流程:

System.Windows.Browser.HtmlElement myFrame = System.Windows.Browser.HtmlPage.Document.GetElementById("_sl_historyFrame");
            if (myFrame != null)
            {
                DirectoryInfo folderPath = new DirectoryInfo(@"\\192.168.1.216\UploadFileMobilePDF\" + transfer.IdTransfer);
                foreach (var file in folderPath.EnumerateFiles("*.pdf", SearchOption.AllDirectories))
                {
                    myFrame.SetStyleAttribute("width", "1024");
                    myFrame.SetStyleAttribute("height", "768");
                    Uri uri = new Uri(folderPath + file.FullName);
                    string path = uri.AbsoluteUri.ToString();
                    myFrame.SetAttribute("src", path);
                    myFrame.SetStyleAttribute("left", "0");
                    myFrame.SetStyleAttribute("top", "50");
                    myFrame.SetStyleAttribute("visibility", "visible");
                }
            }

实例化时错误标记我DirectoryInfo class folderPath = new DirectoryInfo ()

不知道silverlight是不是不能对服务器地址有权限

标签: c#asp.netsilverlight

解决方案


您的应用程序可能无权访问您尝试访问的服务器上的文件。

查看 WindowsImpersonationContext 以了解最有可能解决此问题的方法。https://docs.microsoft.com/en-us/dotnet/api/system.security.principal.windowsimpersonationcontext?view=netframework-4.8

您将需要一个使用 WindowsImpersonationContext 使用有效凭据登录服务器的类(例如“MyImpersonator”)。有太多细节无法呈现完整的解决方案,但使用类(在其他地方定义)来获取单个文件可能看起来像这样:

     using (var impersonator = new MyImpersonator())
     {
        string name = ConfigurationManager.AppSettings["name"];
        string password = ConfigurationManager.AppSettings["pass"];


        if (impersonator.LogOnCrossDomain(account, pass))
        {                   
             if (File.Exists(filepath))
             {                           
                 byte[] content = File.ReadAllBytes(filepath);                          
             }
         }  
      }


推荐阅读