none
[C#]如何在Web service站台環境把站台下的檔案,複製到指定的網域路徑? RRS feed

  • 問題

  •  請教各位MSND好朋友:

    我在網路找到這段引用VB的作法在C#實作,在實體機器運行可以把本基資料複製到指定的網域位置,再把這段寫入Web service站台運行卻無法把檔案複製到指定的網域位置,是否有什麼地方要注意或是要設定的呢?

    網域目錄有開放登入帳號,everyone,NETWORK全部允許寫入,但也還是不允許寫入.

    程式碼如下:

    Microsoft.VisualBasic.Devices.Network Network = new Microsoft.VisualBasic.Devices.Network();

    Network.UploadFile(c:\xxx\123.xml,\\10.0.0.1\upload\123.xml, 帳號, 密碼);

    有經驗的大大請多指教感謝.

    2012年9月28日 上午 03:33

解答

  • 您好,
    請參考:ASP.NET 如何將檔案寫入到網路芳鄰的分享目錄

    以上說明若有錯誤請指教,謝謝。
    亂馬客blog: http://www.dotblogs.com.tw/rainmaker/

    • 已標示為解答 liu.Victor 2012年10月10日 下午 02:10
    2012年10月2日 上午 10:47
  • FAQ

    http://social.msdn.microsoft.com/Search/zh-TW/?Refinement=112&query=236%20web.config%20identity

    論壇是網友平等互助 保證解答請至 微軟技術支援服務


    提問時,錯誤情境描述與錯誤訊息很重要,情境描述包含你做了什麼,預期的結果與實際發生的結果。一個最爛的問法範例:「我的電腦電腦怎麼不能開機?」誰知道你家是不是沒電還是你根本找不到電源鈕。

    • 已標示為解答 liu.Victor 2012年10月10日 下午 02:10
    2012年10月2日 下午 02:04
  • 感謝大家的回覆,集合大大的資訊提供及自己找尋方式,終於找到一種方案解決,並且提供給大家參考,如有不妥或設定不周並請多多指教,感謝各位的支援.

    本人最近安裝一個VM環境測試部屬在windows 2008 R2下IIS 7.0運行

    *透過"虛擬帳戶"(模擬那網域帳戶本機身分)的方法解決無法再IIS 7.0進行網域複製的問題

    0.Web.config也不用加入impersonate="true"

    1.Application Pools/(選擇自己的Pools)如:ENT 2.0/Advanced Settings<跳出視窗>

    2.Process Model/Identity(點選)<跳出視窗>

    3.選擇Custom account/點選set.../輸入要複製過去的網域帳號密碼

    4.重新啟動IIS站台

    5.即可正常運行以下程式碼

    Microsoft.VisualBasic.Devices.Network Network = new Microsoft.VisualBasic.Devices.Network();

    Network.UploadFile(c:\xxx\123.xml,\\10.0.0.1\upload\123.xml, 帳號, 密碼);



    • 已標示為解答 liu.Victor 2012年10月10日 下午 02:10
    • 已編輯 liu.Victor 2012年10月10日 下午 02:13
    2012年10月10日 下午 02:07

所有回覆

  • 錯誤訊息是權限不足嗎? 如果是的話, 要查一下您的Web service的實際執行身份, 再開權限給這個身份. 您可以利用以下的語法查詢執行身份:

    Context.User.Identity.Name

    2012年9月28日 上午 07:54
  • 您好,
    請問有錯誤訊息嗎?

    以上說明若有錯誤請指教,謝謝。
    亂馬客blog: http://www.dotblogs.com.tw/rainmaker/

    2012年9月28日 上午 08:47
  • HI Victor

    你測一下看看把\\10.0.0.1\upload\123.xml改成 file://10.0.0.1/upload/123.xml試看看,下面是我自已測過沒什麼問題,我的測試環境是用nas遠端目錄

    public class Service : System.Web.Services.WebService
    {
          [WebMethod]
        public void HelloWorld()
        {
          
                 Microsoft.VisualBasic.Devices.Network net = new Microsoft.VisualBasic.Devices.Network();
                net.UploadFile("c:\\up.txt", "file://192.168.16.172//kylin//up.txt", "XXX", "XXX");
         
        }
       
    }


    • 已編輯 kylin70 2012年9月28日 上午 09:21
    2012年9月28日 上午 09:20
  • 試試 System.IO.File.Copy(@"c:\xxx\123.xml", @"\\10.0.0.1\upload\123.xml");


    • 已編輯 seanyhkao 2012年9月28日 上午 10:37
    2012年9月28日 上午 10:36
  •  將把這方法寫入asp Form在IIS環境跑出現了以下資訊.

    描述: 在執行目前 Web 要求的過程中發生未處理的例外情形。請檢閱堆疊追蹤以取得錯誤的詳細資訊,以及在程式碼中產生的位置。

    例外詳細資訊: System.UnauthorizedAccessException: 拒絕存取路徑 '\\192.168.1.52\share\TEST.XML'。

    沒有授權 ASP.NET 存取要求的資源。請考慮將資源存取權授與 ASP.NET 要求識別。ASP.NET 有一個基本處理序識別 (通常在 IIS 5 上為 {MACHINE}\ASPNET,在 IIS 6 上為 Network Service),會在應用程式未模擬的情況下使用。如果應用程式是透過 <identity impersonate="true"/> 模擬,這個識別將會是匿名使用者 (通常為 IUSR_MACHINENAME) 或經過驗證的要求使用者。

    若要對檔案授與 ASP.NET 存取權,請在檔案總管中以滑鼠右鍵按一下檔案,選擇 [內容] 並選取 [安全] 索引標籤。按一下 [新增] 加入適當的使用者或群組。反白顯示 ASP.NET 帳戶,並且選取所需存取權限的核取方塊。

    2012年10月2日 上午 10:04
  • asp Form在IIS環境無任何值顯示.

    是否有要在WebConfig檔修改?

    2012年10月2日 上午 10:08
  • 您好,
    請參考:ASP.NET 如何將檔案寫入到網路芳鄰的分享目錄

    以上說明若有錯誤請指教,謝謝。
    亂馬客blog: http://www.dotblogs.com.tw/rainmaker/

    • 已標示為解答 liu.Victor 2012年10月10日 下午 02:10
    2012年10月2日 上午 10:47
  • 造著網站資訊調整一致的帳號及密碼後發生以下錯誤訊息,是否還有其他要設定的.並且感謝大家的回覆.描述: 在執行目前 Web 要求的過程中發生未處理的例外情形。請檢閱堆疊追蹤以取得錯誤的詳細資訊,以及在程式碼中產生的位置。

    例外詳細資訊: System.Security.Policy.PolicyException: 無法取得需要的使用權限。

    原始程式錯誤:

    在執行目前 Web 要求期間,產生未處理的例外狀況。如需有關例外狀況來源與位置的資訊,可以使用下列的例外狀況堆疊追蹤取得。

    '/TEST_005_2' 應用程式中發生伺服器錯誤。

    無法取得需要的使用權限。

    2012年10月2日 下午 01:49
  • FAQ

    http://social.msdn.microsoft.com/Search/zh-TW/?Refinement=112&query=236%20web.config%20identity

    論壇是網友平等互助 保證解答請至 微軟技術支援服務


    提問時,錯誤情境描述與錯誤訊息很重要,情境描述包含你做了什麼,預期的結果與實際發生的結果。一個最爛的問法範例:「我的電腦電腦怎麼不能開機?」誰知道你家是不是沒電還是你根本找不到電源鈕。

    • 已標示為解答 liu.Victor 2012年10月10日 下午 02:10
    2012年10月2日 下午 02:04
  • Hi Victor:

    這個問題的後續狀況如何? 可否回報一下?


    在現實生活中,你和誰在一起的確很重要,甚至能改變你的成長軌跡,決定你的人生成敗。 和什麼樣的人在一起,就會有什麼樣的人生。 和勤奮的人在一起,你不會懶惰; 和積極的人在一起,你不會消沈; 與智者同行,你會不同凡響; 與高人為伍,你能登上巔峰。

    2012年10月10日 上午 05:06
    版主
  • 感謝大家的回覆,集合大大的資訊提供及自己找尋方式,終於找到一種方案解決,並且提供給大家參考,如有不妥或設定不周並請多多指教,感謝各位的支援.

    本人最近安裝一個VM環境測試部屬在windows 2008 R2下IIS 7.0運行

    *透過"虛擬帳戶"(模擬那網域帳戶本機身分)的方法解決無法再IIS 7.0進行網域複製的問題

    0.Web.config也不用加入impersonate="true"

    1.Application Pools/(選擇自己的Pools)如:ENT 2.0/Advanced Settings<跳出視窗>

    2.Process Model/Identity(點選)<跳出視窗>

    3.選擇Custom account/點選set.../輸入要複製過去的網域帳號密碼

    4.重新啟動IIS站台

    5.即可正常運行以下程式碼

    Microsoft.VisualBasic.Devices.Network Network = new Microsoft.VisualBasic.Devices.Network();

    Network.UploadFile(c:\xxx\123.xml,\\10.0.0.1\upload\123.xml, 帳號, 密碼);



    • 已標示為解答 liu.Victor 2012年10月10日 下午 02:10
    • 已編輯 liu.Victor 2012年10月10日 下午 02:13
    2012年10月10日 下午 02:07
  • 如果不用 0 的話,最好列表管制。

    我的經驗是,東西寫好給委辦單位後,3 個月就會忘... 然後網管又在不知情下亂改... 最後發現,帳密在 web.config 比較好維護。

    是可以特別建專用帳戶給 Web.config 填,這是另外一回事。


    論壇是網友平等互助 保證解答請至 微軟技術支援服務


    提問時,錯誤情境描述與錯誤訊息很重要,情境描述包含你做了什麼,預期的結果與實際發生的結果。一個最爛的問法範例:「我的電腦電腦怎麼不能開機?」誰知道你家是不是沒電還是你根本找不到電源鈕。

    2012年10月11日 下午 01:06