我的问题是基于继承了我不能做很多的遗留代码.基本上,我有一个会产生数据块的设备.一个将调用设备来创建该数据块的库,由于某种原因我不完全理解并且即使我想要也不能改变,将该数据块写入磁盘.
此写入不是即时的,但最多可能需要90秒.在那个时候,用户想要获得正在生成的数据的部分视图,所以我想要一个消费者线程来读取另一个库写入磁盘的数据.
在我触摸这个遗留代码之前,我想使用完全控制的代码模仿问题.我正在使用C#,表面上是因为它提供了我想要的许多功能.
在生成器类中,我有这个代码创建一个随机数据块:
FileStream theFS = new FileStream(this.ScannerRawFileName,
FileMode.OpenOrCreate, FileAccess.Write, FileShare.Read);
//note that I need to be able to read this elsewhere...
BinaryWriter theBinaryWriter = new BinaryWriter(theFS);
int y, x;
for (y = 0; y < imheight; y++){
ushort[] theData= new ushort[imwidth];
for(x = 0; x < imwidth;x++){
theData[x] = (ushort)(2*y+4*x);
}
byte[] theNewArray = new byte[imwidth * 2];
Buffer.BlockCopy(theImage, 0, theNewArray, 0, imwidth * 2);
theBinaryWriter.Write(theNewArray);
Thread.Sleep(mScanThreadWait); //sleep for 50 milliseconds
Progress = (float)(y-1 >= 0 ? y-1 …
Run Code Online (Sandbox Code Playgroud) 我注意到,当连接iP*时,有几个应用程序在iTunes中具有"文件共享"功能.示例应用程序是CloudReaders,Stanza等.此界面允许用户将文件添加到应用程序并将文件从应用程序保存到其计算机.现在我在应用程序内部运行了一个HTTP服务器,允许用户通过Wi-Fi向其添加文件,但我也想支持上述方法.
感谢Art Gillespie,我得到了这个工作.最近,我重新命名了我的项目,并最终不得不再次挖掘一下,以弄清楚如何重新启用它,因为它消失了.
这就是你如何做到的.
UIFileSharing
.它应该被列为"应用程序支持iTunes文件共享"之类的东西.build/Release-iphoneos/
项目的文件夹,将appname文件(不是那个.dSYM
)拖到iTunes.如果要求更换,请单击"是".我正在构建一个.net C#控制台程序,以将文件部署到Windows文件共享服务器(正在共享的文件夹).路径是::\\192.168.0.76\htdocs\public
在运行时我收到错误:
[09:35:29]: [Step 1/3] Unhandled Exception: System.UnauthorizedAccessException: Access to the path '\\192.168.0.76\htdocs\public' is denied.
[09:35:29]: [Step 1/3] at DeployFileShare.Program.CopyDir(String source, String dest, String[] exclude, Boolean overwrite)
[09:35:29]: [Step 1/3] at DeployFileShare.Program.Deploy(String num, String source)
[09:35:29]: [Step 1/3] at DeployFileShare.Program.Main(String[] args)
[09:35:29]: [Step 1/3] Process exited with code -532459699
Run Code Online (Sandbox Code Playgroud)
我想我需要对自己进行身份验证.我遇到过这个:
AppDomain.CurrentDomain.SetPrincipalPolicy(PrincipalPolicy.WindowsPrincipal);
WindowsIdentity idnt = new WindowsIdentity(username, password);
WindowsImpersonationContext context = idnt.Impersonate();
Run Code Online (Sandbox Code Playgroud)
我也尝试过:
AppDomain.CreateDomain("192.168.0.76").SetPrincipalPolicy(PrincipalPolicy.WindowsPrincipal);
WindowsIdentity idnt = new WindowsIdentity("user", "pass");
WindowsImpersonationContext context = idnt.Impersonate();
Run Code Online (Sandbox Code Playgroud)
我不知道如何使用它.当我运行应用程序时,我得到:
C:\Users\Administrator>DeployFileShare 1 R:\BuildOutput\_PublishedWebsites\Web 2 …
Run Code Online (Sandbox Code Playgroud) 背景
我需要编写一个使用.NET 2.0版本的工具(由于政治,商业和机密性/信任原因,使用现成的东西不是这个客户的选项)通过网络将文件从一个服务器迁移到另一个服务器.服务器是本地团队的文件服务器,某些团队文件夹需要迁移到其他服务器以便于重组.基本的想法是我们读取每个文件并在数小时内通过网络流式传输,几天后数据将被迁移.需要保留文件权限.由于这将花费几天时间(我们正在谈论几千兆字节的数据,对于某些团队而言),我们需要每晚迭代文件并比较修改日期并更新已更改的日期.理论上说,最终新服务器将拥有最新的文件副本,用户可以切换到新服务器.它当然不是那么简单,但我们有一个我们认为应该工作的设计:)
问题
所以理论上我们只需打开文件,通过网络流式传输,然后在另一端写入,对吧?:)
不幸的是,在服务器本身,文件共享是在文件夹路径创建的,例如:
D:\ Data\Team Shares\DIVISION\DEPARTMENT\NAME OF TEAM - 可能会长期一直
对于每个用户,此路径将映射到驱动器,例如,它将作为\\ SERVER\TEAMNAME共享并映射到T:驱动器.
这导致了从T:驱动器可见的文件在MAX_PATH
限制范围内的情况,但是当在服务器本身上本地查看时,它们会超出它.我们无法使用网络共享来访问文件,因为这个工具需要是通用的,要在数百个这样的服务器上运行,并且没有标准的方法来判断哪些文件共享是我们应该移动的文件共享和那些不是 - 甚至没有命名约定标准.此外,偶尔会有其他股份的子股票,因此我们超过MAX_PATH
限额两倍!
我知道使用"\\?\"前缀指定路径的解决方法,该路径将路径视为UNC路径,并允许理论上最多32k个字符.
这种解决方法是在Win32 API级别实现的,System.IO命名空间(大部分)基本上只是本机Win32 API函数的一个薄包装,但是在将调用交给API之前,Microsoft已经"帮助"实现了额外(不正确)的验证. .在这种情况下,.NET Framework拒绝该路径,因为它声称'?' 是一个无效的路径字符.
所以我的问题是......有没有一种方法我没有想到这将允许我解决这个问题,而不必完全重写几乎整个System.IO命名空间,加载P/Invoke调用,只是为了删除这个烦人的验证?
所以我有一个小的C#应用程序需要定期检查网络上多台机器上的目录内容.我以为我只能读取\ hostname\C $作为目录路径,但是使用普通的Directory类似乎没有办法对其他服务器进行身份验证,因此您可以访问隐藏的共享.我确信有一个简单的方法可以做到这一点,我忽略了,但此刻我有点难过.
我正在尝试将应用程序迁移到Amazon并且需要客户端计算机才能连接.实际上,我似乎只需要能够将EC2实例(运行Windows Server 2008 R2)上的文件夹映射到客户机(运行Windows 7)就足够了.
我已经做了很多在线搜索,并在早期遇到了这个条目:
我打开了测试机器和EC2服务器两端的端口,无法成功连接.该文件夹是共享的,我已检查并重新检查权限,端口等,但无济于事.谁能帮助我指出正确的方向?
编辑:我也尝试过VPN到实例,再次无济于事.
刚刚注意到我在 Azure 中的文件共享存储出现“ClientOtherError”的概率非常高。他们的成功率在 50% 到 100% 之间。
任何人都有任何经验可以解释为什么会这样吗?
附图以红色/橙色显示 ClientOtherError 事务,以蓝色显示成功事务。
在收到通知已通过另一个线程写入一定数量的数据后,我想读取一个文件.
我的尝试是在我的Writer类中创建一个Reactive Subject,它在写入由它组成的BinaryWriter之后调用OnNext.这个BinaryWriter使用FileStream.
这似乎不起作用.我假设我不能保证Write已被刷新.
我宁愿不手动调用flush.有现成的方法吗?
我以前从未这样做过,我所做的所有研究都表明需要用户名/密码.情况就是这样:我正在为我的公司开发一个应用程序,该应用程序需要访问网络上的文件共享.我们称之为文件共享\\server\TPK
.我的应用需要从此共享中的此文件夹中获取文件.在公司网络上使用文件共享与使用File I/O(System.IO
)一样吗?任何人都可以给我任何指导如何做到这一点?我知道这可能是一个基本问题,我为此道歉.
azure应用程序服务ASE中有一个azure web应用程序。它链接到 Vnet。笔记本电脑/PC 之间的点对点 VPN 从外部云/本地连接到 Vnet,形成某种混合云设置。我正在尝试查看是否可以从 Web 应用程序(应用程序服务)访问该 Vnet 中的 PC/VM 中的网络文件共享/共享文件夹。当我尝试这样做时,我得到了未经授权的异常。我有什么选择?使用云服务 Web 角色而不是 Web 应用程序会有帮助吗?或者在 Vnet 中设置域控制器 + AD 并将虚拟机添加到域并尝试以域用户身份访问共享(通过代码模拟)?另外,我不确定是否通过点到站点 VPN 将我的笔记本电脑/PC 连接到此 Vnet,笔记本电脑/PC 将位于我们创建的域下。
其背后的用例是在 azure PaaS 中运行的 Web 应用程序上显示一些本地媒体(图像、视频等可能更大的尺寸)。
请分享您的想法和评论。
fileshare azure azure-vpn azure-app-service-envrmnt hybrid-cloud