2016-06-21 27 views
4

Sharepointが提供するUNCパスを使用してSharepoint Serverにローカルファイルをコピーする際にC#プログラムを使用しようとすると、ファイルシステム。まず、私のユーザーは、その特定のSharepointフォルダにアクセスするために必要なすべての権限を持っています。 「ネットワークパスが見つかりませんでした。」これはエラーで失敗しSharepoint-shareへのファイルのコピーが初めて失敗しました。

string targetSharepointPath = @"\\[email protected]\DavWWWRoot\team\wmscompanydep\Software Releases\MyToolConfig" 
System.IO.File.Copy(sourcePath, targetSharepointPath, false); 

これは私の操作は基本的に次のようになります

上記のパスをコピーしてWIndowsファイルエクスプローラ(ではなく、インターネットエクスプローラ)に貼り付けると、すべてが動作します。

私の前提は、バックグラウンドでWindowsエクスプローラがもう少しだということです。しかし何?資格情報を入力する必要はありません.targetSharepointPathはエクスプローラで動作し、一度入力するとすぐにC#プログラムでも動作します。私のシステムを再起動するまで、私はそのステップを繰り返さなければならない。なぜ、私はそれをプログラム的に達成することができますか?私は "普通の" Windowsサーバー上でUNCパスをたくさん使っています。ユーザーが権限を持っていれば、私は追加の認証は必要ありません。

答えて

5

Sharepointに接続するには、WebClientというWindowsサービスが必要です。

エクスプローラからそのリンクを開くと、サービスが開始されていることが確認されます。これは、エクスプローラでリンクを開いた後にアプリからSharepointにアクセスできる理由です。

クライアントには、達成するために自動的に開始されたserviceがあることを確認できます。

または、この方法でコードからサービスを開始できます。私はそれが動作するはずだと思う

using (ServiceController service= new ServiceController("WebClient")) 
    { 

     if (service.Status == ServiceControllerStatus.Stopped) 
     { 

      service.Start(); 
      service.WaitForStatus(ServiceControllerStatus.Running, new TimeSpan(0, 0, 15)); 
      //Check status here by calling service.Status and proceed with your code. 
     } 
     else 
     { 
      //proceed with your code as the service is up and running 
     } 
    } 
+2

(あなたは、このための管理者権限が必要な場合があります)... + 1 – Ansari

+0

私は今、この数回使用し、それが仕事をして、良い答え、ありがとう! – Erik

+1

これはまさに私が必要としていたものでした。ネットワークパスにエラーが見つかりませんでした。上記のコードの1つは、System.ServiceProcess.dllへの参照が必要であることです。 https://msdn.microsoft.com/en-us/library/system.serviceprocess.servicecontroller(v=vs.110).aspx –

関連する問題