c# - 错误:不允许文件操作。拒绝访问路由
问题描述
我正在开发一个使用 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是不是不能对服务器地址有权限
解决方案
您的应用程序可能无权访问您尝试访问的服务器上的文件。
查看 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);
}
}
}
推荐阅读
- php - 如何使用 Fullcalendar.io 每年重复生日日期?
- javascript - 计时器问题,在 React 中将毫秒转换为日期格式
- android - Android 实现播放和下载按钮以使用存储在 JSON 中的 URL 从 Firebase 存储下载 MP3 文件并上传到 Firebase 数据库
- haskell - 如何为 GHCI 强制执行类型构造函数参数
- android - 为什么信号功能无法使用信号?
- authentication - 使用 Ionic 的指纹 AIO 进行数据库身份验证
- angularjs - 一个函数不等待另一个函数执行
- java - 为什么即使我有一个 catch 语句,我仍然会收到 InputMissmatchException
- angular - 在路由器链接活动更改图标上
- kubernetes - 使用 Istio 控制/拦截负载均衡器流量