1

FTP サーバーを Windows Azure に移行したいと考えています。クリーンな仮想マシン イメージを作成し、そこに FTP サーバーをインストールしました。ここで、FTP ディレクトリにあるファイルを Windows Azure データ センターから直接処理できるようにするために、ファイル共有とエンドポイント (ポート 445 TCP および UDP) を作成しました。ワーカー ロールから FTP サーバーのファイル共有にアクセスしようとすると、通常、「パス '...' へのアクセスが拒否されました」というメッセージが表示されます。. ワーカー ロールからリモート デスクトップ経由で FTP サーバーのファイル共有にアクセスできます。これは、ファイアウォールと FTP の構成が正しいことを意味します。Worker ロールは、Windows Azure データ センターのファイル共有にアクセスできますか?

コード:

        try
        {
            const string networkShare = @"...";
            Directory.GetFiles(networkShare).ToList().ForEach(file => Trace.TraceInformation(file));

            Thread.Sleep(10000);
            Trace.WriteLine("Working", "Information");
        }
        catch (Exception ex)
        {
            Trace.TraceError(ex.ToString());
        }

例外:

Exception thrown on running: System.UnauthorizedAccessException: Access to the path '...' is denied.

Server stack trace: 
   at System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)
   at System.IO.FileSystemEnumerableIterator`1.CommonInit()
   at System.IO.FileSystemEnumerableIterator`1..ctor(String path, String originalUserPath, String searchPattern, SearchOption searchOption, SearchResultHandler`1 resultHandler, Boolean checkHost)
   at System.IO.Directory.InternalGetFileDirectoryNames(String path, String userPathOriginal, String searchPattern, Boolean includeFiles, Boolean includeDirs, SearchOption searchOption, Boolean checkHost)
   at System.IO.Directory.InternalGetFiles(String path, String searchPattern, SearchOption searchOption)
   at KALCIK.NET.Plugin.ReadFromShare.ReadFromSharePlugin.Manipulate(String valueToManipulate)
   at System.Runtime.Remoting.Messaging.StackBuilderSink._PrivateProcessMessage(IntPtr md, Object[] args, Object server, Object[]& outArgs)
   at System.Runtime.Remoting.Messaging.StackBuilderSink.SyncProcessMessage(IMessage msg)

Exception rethrown at [0]: 
   at System.Runtime.Remoting.Proxies.RealProxy.HandleReturnMessage(IMessage reqMsg, IMessage retMsg)
   at System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke(MessageData& msgData, Int32 type)
   at KALCIK.NET.Plugin.Contracts.TextManipulationPluginBase.Manipulate(String valueToManipulate)
   at KALCIK.NET.CloudServices.WorkerRole.BusinessLayers.WorkOrderProcessing.ProcessWorkOrder(Tuple`2 workOrder) in c:\Development\Samples\CloudServicesPlugInSample\CloudServices.WorkerRole\BusinessLayers\WorkOrderProcessing.cs:line 56
   at KALCIK.NET.CloudServices.WorkerRole.WorkOrderProcessorService.Run() in c:\Development\Samples\CloudServicesPlugInSample\CloudServices.WorkerRole\WorkOrderProcessorService.cs:line 67; TraceSource 'WaWorkerHost.exe' event
4

2 に答える 2

0

これはセキュリティ上の問題だと思います。ユーザー (作業ロールが実行されている) は、ネットワーク共有で認証できません。Directory.GetFiles の前に「ネット使用」を試してください

C# からの "net use" : C#からリモート ディレクトリにアクセスする

于 2013-04-16T06:33:28.460 に答える