2016-06-22 4 views
0

ボタンを押したときに特定のフォルダのサーバーからファイルをコピーしようとしました。 :すべての良い、特定のフォルダvb.netでExcelをコピーしようとすると、パスへのアクセスが拒否されます

If System.IO.File.Exists(Server.MapPath("../../TempDownloads/" & SampleOrder & ".xls")) = True Then 
      System.IO.File.Copy(Server.MapPath("../../TempDownloads/" & SampleOrder & ".xls"), "\\art-fs02\07_ART_ECO\12_Samples\03_Samples_order\999_MoraruVladutBOM_Test\" & SampleOrder & ".xls", True) 
     Else 
      LBL_Error.Text = "There is no file to be copied !" 
      GC.Collect() 
      Exit Sub 
     End If 

[OK]を、私は別のreferincesと貴様の輸入を持つ2つのアプリケーションがありますが、最初のアプリケーションの仕事で(特定のフォルダに自分のファイルをコピーするために、「\芸術-FS02 \ 07_ART_ECO \ 12_Samples \ 03_Samples_order \ 999_MoraruVladutBOM_Test \ ")しかし、私は別のapplicatiobファイルにしようとすると動作しません。 2つのアプリケーションはすべてサーバー上にあります。

は私が入れたときに、ページ内の同じコードでは、そのように私にエラーが発生します:

アクセスパス '\芸術-FS02 \ 07_ART_ECO \ 12_Samples \ 03_Samples_order \ 999_MoraruVladutBOM_Test \ Test.xlsを' に拒否されます。

私のコードが動作し、2番目のアプリケーションのために参照し、どこがうまく動作しないのかについては、参考文献と共に画像を置いています。

enter image description here

私がなぜ最初のアプリケーションに私のコードの仕事を知っているし、ファイルをコピーし、第二のアプリケーションは動作しませんしません。

私は、上記のページのすべての私のコードを置く:私はこのコメントにするつもりだったが、私はコメントをまだ担当者を持っていないので、私はこのANを迫らだ

Imports System.Data 
Imports System.IO 
Imports OfficeOpenXml 
Imports System.Globalization 
Imports System.Data.OleDb 
Imports System.Data.SqlClient 
Imports System.Configuration 

Partial Class TCO_Orders_TestCopy 
    Inherits System.Web.UI.Page 

    Protected Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.Click 
     Dim SampleOrder As String = "SO-Test" 
     Dim Qty As String = "55" 

     SampleOrder = SampleOrder.Remove(0, 3) 

     Dim cn As New OleDbConnection 
     Dim cm As New OleDbCommand 
     cn = New OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & Server.MapPath("../../FolderBOM/BOM2.xls") & ";Extended Properties=""Excel 12.0;HDR=Yes;""") 
     cn.Open() 
     With cm 
      .Connection = cn 
      .CommandText = "UPDATE [ARO list$] set info = '" & SampleOrder & "' where [SO-info] ='DVM SO no.'" 
      cm = New OleDbCommand(.CommandText, cn) 
      cm.ExecuteNonQuery() 
      cn.Close() 

      cn.Open() 
      .CommandText = "UPDATE [ARO list$] set info = '" & SampleOrder & "' where [SO-info] ='Local SO no.'" 
      cm = New OleDbCommand(.CommandText, cn) 
      cm.ExecuteNonQuery() 
      cn.Close() 

      cn.Open() 
      .CommandText = "UPDATE [ARO list$] set info = " & Qty & " where [SO-info] ='qty'" 
      cm = New OleDbCommand(.CommandText, cn) 
      cm.ExecuteNonQuery() 
      cn.Close() 
     End With 

     Try 
      My.Computer.FileSystem.CopyFile(
     Server.MapPath("../../FolderBOM/BOM2.xls"), 
     Server.MapPath("../../TempDownloads/" & SampleOrder & ".xls"), Microsoft.VisualBasic.FileIO.UIOption.AllDialogs, Microsoft.VisualBasic.FileIO.UICancelOption.DoNothing) 
     Catch ex As Exception 
      LBL_Error.ForeColor = System.Drawing.Color.Red 
      LBL_Error.Text = "This SO has BOM created !" 
      Exit Sub 
     End Try 

     If System.IO.File.Exists(Server.MapPath("../../TempDownloads/" & SampleOrder & ".xls")) = True Then 
      System.IO.File.Copy(Server.MapPath("../../TempDownloads/" & SampleOrder & ".xls"), "\\art-fs02\07_ART_ECO\12_Samples\03_Samples_order\999_MoraruVladutBOM_Test\" & SampleOrder & ".xls", True) 
     Else 
      LBL_Error.Text = "There is no file to be copied !" 
      GC.Collect() 
      Exit Sub 
     End If 
    End Sub 
End Class 
+1

これが原因であるかどうかわかりませんが、ファイルを使用しようとする前に接続を破棄してください – Steve

+0

...わかりません...どうすればよいですか? – Vladut

+0

Try add _cn.Dispose_の直前に、接続の作成前後で、Try _Using cn = New OleDbConnection( ".... ....)の使用/終了を使用して追加してください._ – Steve

答えて

0

代わりに答えますが、パスアクセス違反やファイルアクセス違反が頻繁に発生すると、不正な標高の原因となり、指定されたパス内で操作を実行できなくなります。エディタを使用すると、Admin Elevationでエディタを実行することができます。エディタを使用して作成されたプロセスはもちろん、テストしようとしているプログラムを昇格させたり、管理者として直接実行したり、この問題がいくつかあったそれ以前にはそれが解決された時代でした。

関連する問題