none
請問...關於Process.Start

    問題

  • 各位高手好,在下學習 ASP.NET MVC5,

    寫了一段程式,主要是在公司的網域內,從資料庫伺服器(SrvA)抓取資料表,該資料表中記錄了檔案伺服器(SrvB)的路徑(如:\\SrvB\分享\105\abc.tif、\\SrvB\分享\105\def.txt),然後呼叫以下的程式,讓系統自行選擇開啟該檔案的程式

    Process.Start(@"\\SrvB\分享\105\abc.tif");

    結果使用IIS Express時,程式可以正常執行,如我預期般使用看圖程式把該檔案開起來了,

    但是如果改用本機IIS時,就會出現存取被拒的訊息,如下所示:

    [Win32Exception (0x80004005): 存取被拒。]
       System.Diagnostics.Process.StartWithShellExecuteEx(ProcessStartInfo startInfo) +631
       System.Diagnostics.Process.Start(ProcessStartInfo startInfo) +60
       WebQCase.Controllers.ShowCaseController.OpenFile(String sFile) in c:\C#2013\WebQCase\WebQCase\Controllers\ShowCaseController.cs:159
       lambda_method(Closure , ControllerBase , Object[] ) +268
       System.Web.Mvc.ReflectedActionDescriptor.Execute(ControllerContext controllerContext, IDictionary`2 parameters) +229
       System.Web.Mvc.ControllerActionInvoker.InvokeActionMethod(ControllerContext controllerContext, ActionDescriptor actionDescriptor, IDictionary`2 parameters) +35
       System.Web.Mvc.Async.AsyncControllerActionInvoker.<BeginInvokeSynchronousActionMethod>b__39(IAsyncResult asyncResult, ActionInvocation innerInvokeState) +39
       System.Web.Mvc.Async.WrappedAsyncResult`2.CallEndDelegate(IAsyncResult asyncResult) +71
       System.Web.Mvc.Async.AsyncControllerActionInvoker.EndInvokeActionMethod(IAsyncResult asyncResult) +42
       System.Web.Mvc.Async.AsyncInvocationWithFilters.<InvokeActionMethodFilterAsynchronouslyRecursive>b__3d() +72
       System.Web.Mvc.Async.<>c__DisplayClass46.<InvokeActionMethodFilterAsynchronouslyRecursive>b__3f() +386
       System.Web.Mvc.Async.AsyncControllerActionInvoker.EndInvokeActionMethodWithFilters(IAsyncResult asyncResult) +42
       System.Web.Mvc.Async.<>c__DisplayClass2b.<BeginInvokeAction>b__1c() +38
       System.Web.Mvc.Async.<>c__DisplayClass21.<BeginInvokeAction>b__1e(IAsyncResult asyncResult) +186
       System.Web.Mvc.Async.AsyncControllerActionInvoker.EndInvokeAction(IAsyncResult asyncResult) +38
       System.Web.Mvc.Controller.<BeginExecuteCore>b__1d(IAsyncResult asyncResult, ExecuteCoreState innerState) +29
       System.Web.Mvc.Async.WrappedAsyncVoid`1.CallEndDelegate(IAsyncResult asyncResult) +67
       System.Web.Mvc.Controller.EndExecuteCore(IAsyncResult asyncResult) +53
       System.Web.Mvc.Async.WrappedAsyncVoid`1.CallEndDelegate(IAsyncResult asyncResult) +36
       System.Web.Mvc.Controller.EndExecute(IAsyncResult asyncResult) +38
       System.Web.Mvc.MvcHandler.<BeginProcessRequest>b__5(IAsyncResult asyncResult, ProcessRequestState innerState) +44
       System.Web.Mvc.Async.WrappedAsyncVoid`1.CallEndDelegate(IAsyncResult asyncResult) +67
       System.Web.Mvc.MvcHandler.EndProcessRequest(IAsyncResult asyncResult) +38
       System.Web.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +399
       System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +137
    

    目前都是使用VS2013執行偵錯,只有在專案屬性中選擇 IIS Express / 本機IIS,就有如此的差異,

    看起來像是權限問題,但我已確定SrvB的權限都已開啟,不知道問題是出在那裡呢?

    另外我有在Web.Config內加入 

    <identity impersonate="true"/>

    並在IIS上該網站應用程式中的驗證中設定上指定的帳號,最後一樣是出現相同的訊息

    有上網查過相關的內容,但實在是沒頭緒,才上來求助,謝謝~

    另外請問,若未來將系統佈署至正式的網頁伺服器後,這樣呼叫Process.Start的動作,會不會有其他的限制呢?因為目前我的開發環境跟IIS還是同一台~謝謝~


    2016年11月23日 上午 06:29

解答

  • 各位大大,不好意思,我想我再把我的Script跟相關畫面整理一下,若是有不夠清楚的地方,也請大大指教,感謝~~

    Web.Config

    <identity impersonate="true" userName="ACM\I007" password="xxxxxx"/>

    IIS應用程式集區

    專案屬性


    執行結果,可使用預設程式開啟檔案

    今早我測試結果如下:

    專案屬性 IIS應用程式集區設定 測試結果
    IIS Express ApplicationPoolIdentity 正常顯示
    IIS Express ACM\I007 正常顯示
    本機IIS ApplicationPoolIdentity 存取被拒
    本機IIS ACM\I007 無錯誤訊息,但也沒顯示檔案

    ACM\I007這個帳號是Domain Users/Domain Admins/也加入了本機的Administrators群組

    我越測頭越暈了~是不是我測錯方向了呢?

    若是有描述不夠清楚的地方,再拜託各位大大不吝指教,感謝~

    ps:咦..畫了表格的格線..預覽有,但是提交後就又看不見了~~XD

    你用 ACM\I007 測試的時候, 有開啟 "工作管理員" 觀察 process 有啟動嗎 ? 因為這個狀況, 如果沒有特殊的調整,因為 session isolate ,畫面可能不會出現.


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

    • 已標示為解答 iamdanfu 2016年11月24日 下午 12:53
    2016年11月24日 上午 04:23

所有回覆

  • IIS 的執行帳戶要有權限,檢查你的 app pool 使用的帳戶為何,再把執行權限授予該帳戶應該就可以了,若有必要也可以修改執行帳戶為自訂帳戶 (但萬萬不可仗用 Administrator 或具 Administrators 權限的帳戶)。

    如果沒有特別設定,光是加上 <identity impersonate="true" /> 是沒用的。


    強力監督SQL Injection問題!!

      • 小朱的技術隨手寫:http://www.dotblogs.com.tw/regionbbs/
      • 雲端學堂Facebook: http://www.facebook.com/studyazure

    2016年11月23日 上午 08:03
    版主
  • 您可以用工作管理員來看一下 w3wp.exe 的使用者,check 它是否有權限access



    亂馬客blog: http://www.dotblogs.com.tw/rainmaker/

    2016年11月23日 上午 08:34
  • 小朱大大,是在Web.Config內加入,如下的帳號設定嗎?但我試過還是存取被拒耶..@@

    <identity impersonate="true" userName="Domain\I007" password="xxxxxx"/>

    不過上面那個帳號是Domain Admins

    我另外建了一個Domain Users,

    <identity impersonate="true" userName="Domain\I007c" password="xxxxxx"/>

    結果就出現...

    無法載入檔案或組件 'Antlr3.Runtime' 或其相依性的其中之一。 存在某個不正常的 API 呼叫。 (發生例外狀況於 HRESULT: 0x800300FA (STG_E_ABNORMALAPIEXIT))

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

    例外狀況詳細資訊: System.IO.FileLoadException: 無法載入檔案或組件 'Antlr3.Runtime' 或其相依性的其中之一。 存在某個不正常的 API 呼叫。 (發生例外狀況於 HRESULT: 0x800300FA (STG_E_ABNORMALAPIEXIT))

    若是我在IIS上設定,如下圖,

    工作管理員也出現如下:

    我再執行程式,會找不到檔案,訊息如下,但我確定檔案是存在\\SrvB裡面的路徑

    系統找不到指定的檔案。

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

    例外狀況詳細資訊: System.ComponentModel.Win32Exception: 系統找不到指定的檔案。

    原始程式錯誤:
    行 157:            //{
    行 158:                //Process.Start(sExeName, sFile, sUser, sPasswd, "ACM");
    行 159:            Process.Start(sFile);
    行 160:            //}
    行 161:            //catch (Exception e)

    原始程式檔: c:\C#2013\WebQCase\WebQCase\Controllers\ShowCaseController.cs    行: 159

    堆疊追蹤:
    [Win32Exception (0x80004005): 系統找不到指定的檔案。]
       System.Diagnostics.Process.StartWithShellExecuteEx(ProcessStartInfo startInfo) +631
       System.Diagnostics.Process.Start(ProcessStartInfo startInfo) +60
       WebQCase.Controllers.ShowCaseController.OpenFile(String sFile) in c:\C#2013\WebQCase\WebQCase\Controllers\ShowCaseController.cs:159
       lambda_method(Closure , ControllerBase , Object[] ) +268
       System.Web.Mvc.ReflectedActionDescriptor.Execute(ControllerContext controllerContext, IDictionary`2 parameters) +229
       System.Web.Mvc.ControllerActionInvoker.InvokeActionMethod(ControllerContext controllerContext, ActionDescriptor actionDescriptor, IDictionary`2 parameters) +35
       System.Web.Mvc.Async.AsyncControllerActionInvoker.<BeginInvokeSynchronousActionMethod>b__39(IAsyncResult asyncResult, ActionInvocation innerInvokeState) +39
       System.Web.Mvc.Async.WrappedAsyncResult`2.CallEndDelegate(IAsyncResult asyncResult) +71
       System.Web.Mvc.Async.AsyncControllerActionInvoker.EndInvokeActionMethod(IAsyncResult asyncResult) +42
       System.Web.Mvc.Async.AsyncInvocationWithFilters.<InvokeActionMethodFilterAsynchronouslyRecursive>b__3d() +72
       System.Web.Mvc.Async.<>c__DisplayClass46.<InvokeActionMethodFilterAsynchronouslyRecursive>b__3f() +386
       System.Web.Mvc.Async.AsyncControllerActionInvoker.EndInvokeActionMethodWithFilters(IAsyncResult asyncResult) +42
       System.Web.Mvc.Async.<>c__DisplayClass2b.<BeginInvokeAction>b__1c() +38
       System.Web.Mvc.Async.<>c__DisplayClass21.<BeginInvokeAction>b__1e(IAsyncResult asyncResult) +186
       System.Web.Mvc.Async.AsyncControllerActionInvoker.EndInvokeAction(IAsyncResult asyncResult) +38
       System.Web.Mvc.Controller.<BeginExecuteCore>b__1d(IAsyncResult asyncResult, ExecuteCoreState innerState) +29
       System.Web.Mvc.Async.WrappedAsyncVoid`1.CallEndDelegate(IAsyncResult asyncResult) +67
       System.Web.Mvc.Controller.EndExecuteCore(IAsyncResult asyncResult) +53
       System.Web.Mvc.Async.WrappedAsyncVoid`1.CallEndDelegate(IAsyncResult asyncResult) +36
       System.Web.Mvc.Controller.EndExecute(IAsyncResult asyncResult) +38
       System.Web.Mvc.MvcHandler.<BeginProcessRequest>b__5(IAsyncResult asyncResult, ProcessRequestState innerState) +44
       System.Web.Mvc.Async.WrappedAsyncVoid`1.CallEndDelegate(IAsyncResult asyncResult) +67
       System.Web.Mvc.MvcHandler.EndProcessRequest(IAsyncResult asyncResult) +38
       System.Web.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +399
       System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +137
    

    不知我設定的地方是正確還是錯誤呢?


    • 已編輯 iamdanfu 2016年11月23日 上午 08:50
    2016年11月23日 上午 08:49
  • 亂馬客大大,

    我已經把SrvB(那台是NAS)那台開成Everyone都有存取權了~

    請問大大,我有設定正確嗎??

    2016年11月23日 上午 09:00
  • 先把那個帳戶加到本機的 Administrators 群組再試一次,如果可以就證明是權限問題,你要一步一步去查它需要哪些權限。

    加到 Administrators 群組只是在本地的除錯手段,在正式環境絕對不能使用這個方法。


    強力監督SQL Injection問題!!

      • 小朱的技術隨手寫:http://www.dotblogs.com.tw/regionbbs/
      • 雲端學堂Facebook: http://www.facebook.com/studyazure

    2016年11月23日 上午 09:02
    版主
  • 小朱大大,所以在這個案例來說,存取被拒跟系統找不到指定的檔案,都是權限問題?

    目前已加入本機的Administrators群組,顯示系統找不到指定的檔案....@@

    謝謝....我會再試看看的...真怪...現在試都變成系統找不到指定的檔案...@@


    2016年11月23日 上午 09:21
  • http://stackoverflow.com/questions/20180634/could-not-load-file-or-assembly-antlr3-runtime-1-or-one-of-its-dependencies

    強力監督SQL Injection問題!!

      • 小朱的技術隨手寫:http://www.dotblogs.com.tw/regionbbs/
      • 雲端學堂Facebook: http://www.facebook.com/studyazure

    2016年11月23日 上午 09:53
    版主
  • 1. w3wp.exe 在 Win2008 以後,在 Session 0 跑,你要用工作管理員確認是否執行。

    2. 你在 web.config 先使用 server 桌面能登入的 Administrators 帳號跑,例如 ServerAdmin ,然後用 ServerAdmin 進入檢查工作管理員。


    不精確的問法,就會得到隨便猜的答案;自己都不肯花時間好好描述問題,又何必期望網友會認真回答?

    2016年11月23日 下午 04:00
  • >>我已經把SrvB(那台是NAS)

    NAS的話,小喵猜可能沒有辦法加入AD環境(或者您的NAS可以支援AD環境也說不定)

    小喵個人建議的作法:

    1. 在NAS上面,新增一組帳密,可存取您要分享的並開共享給這個帳密
    2. 在IIS的主機上,在主機本機新增一組一樣的帳密,當然IIS運作需要的基本權限要授與
    3. 在AppPool上面,使用這組本機(IIS主機)上的帳號

    這樣的方式您試試看

    ^.^a


    topcat(姍舞之間的極度凝聚)
    http://www.dotblogs.com.tw/topcat
    世界上有兩樣東西分享給別人後,不但不會變少,還會變更多:
    一個是快樂,另一個是知識~ 分享...是知識累積的開始...

    2016年11月24日 上午 12:28
    版主
  • 1) 設定成:

    <identity impersonate="true"/>

    會需要開放給每一個使用者足夠的權限

    2) Antlr3載入失敗可以參考以下的討論:

    Could not load file or assembly Antlr3.Runtime.dll

    2016年11月24日 上午 01:05
  • 喵大,該NAS是已經加入AD了,且權限我也全開了,我有回應亂馬客大大的那幾張圖,應該是算有加入吧,且我也把未登錄的訪客權限改為無限制,應該是誰都可以連進去了,雖然我知道這樣子不對,但是我是想先找出為什麼...使用IIS Express就可以,改為本機IIS就不行~~@@

    2016年11月24日 上午 02:25
  • 各位大大,不好意思,我想我再把我的Script跟相關畫面整理一下,若是有不夠清楚的地方,也請大大指教,感謝~~

    Web.Config

    <identity impersonate="true" userName="ACM\I007" password="xxxxxx"/>

    IIS應用程式集區

    專案屬性


    執行結果,可使用預設程式開啟檔案

    今早我測試結果如下:

    專案屬性 IIS應用程式集區設定 測試結果
    IIS Express ApplicationPoolIdentity 正常顯示
    IIS Express ACM\I007 正常顯示
    本機IIS ApplicationPoolIdentity 存取被拒
    本機IIS ACM\I007 無錯誤訊息,但也沒顯示檔案

    ACM\I007這個帳號是Domain Users/Domain Admins/也加入了本機的Administrators群組

    我越測頭越暈了~是不是我測錯方向了呢?

    若是有描述不夠清楚的地方,再拜託各位大大不吝指教,感謝~

    ps:咦..畫了表格的格線..預覽有,但是提交後就又看不見了~~XD
    • 已編輯 iamdanfu 2016年11月24日 上午 03:29
    2016年11月24日 上午 03:25
  • 各位大大,不好意思,我想我再把我的Script跟相關畫面整理一下,若是有不夠清楚的地方,也請大大指教,感謝~~

    Web.Config

    <identity impersonate="true" userName="ACM\I007" password="xxxxxx"/>

    IIS應用程式集區

    專案屬性


    執行結果,可使用預設程式開啟檔案

    今早我測試結果如下:

    專案屬性 IIS應用程式集區設定 測試結果
    IIS Express ApplicationPoolIdentity 正常顯示
    IIS Express ACM\I007 正常顯示
    本機IIS ApplicationPoolIdentity 存取被拒
    本機IIS ACM\I007 無錯誤訊息,但也沒顯示檔案

    ACM\I007這個帳號是Domain Users/Domain Admins/也加入了本機的Administrators群組

    我越測頭越暈了~是不是我測錯方向了呢?

    若是有描述不夠清楚的地方,再拜託各位大大不吝指教,感謝~

    ps:咦..畫了表格的格線..預覽有,但是提交後就又看不見了~~XD

    你用 ACM\I007 測試的時候, 有開啟 "工作管理員" 觀察 process 有啟動嗎 ? 因為這個狀況, 如果沒有特殊的調整,因為 session isolate ,畫面可能不會出現.


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

    • 已標示為解答 iamdanfu 2016年11月24日 下午 12:53
    2016年11月24日 上午 04:23
  • Bill大大,你好,我剛剛測試了,

    檢視了工作管理員,看來是有啟動的~

    2016年11月24日 上午 04:29
  • 如果不需要看到視窗,那這樣就行了. 如果需要看到視窗, 就要解決 session isolate 的問題

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

    2016年11月24日 上午 06:17
  • 請問要怎麼解決session isolate的問題呢?直接用這關鍵字搜尋嗎?

    還是要去那裡看log??

    在下有找到這個網頁,是這個嗎? https://msdn.microsoft.com/en-us/library/windows/hardware/dn653293%28v=vs.85%29.aspx?f=255&MSPPError=-2147217396

    • 已編輯 iamdanfu 2016年11月24日 上午 06:36
    2016年11月24日 上午 06:19
  • 你可以參考這篇討論

    開發AP無法在Vista跟Win7正常執行


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

    2016年11月24日 上午 06:47
  • Bill大大,

    看了該網頁的說明,還是不太清楚....

    抱歉,在下基本功夫太弱,不太懂這個意思,
    是指我在使用Process.Start時,要使用類似作業系統RunAs的那種概念嗎?還是??
    看那篇文章裡面有寫到GetTokenByName這部份的Code,是指我不能使用Process.Start(filename)直接呼叫嗎?而是要使用RunProcess指定要開啟檔案的執行檔名後,再去開啟我的filename嗎?

    2016年11月24日 上午 07:20
  • 簡單的說法就是:

    先取得目前擁有螢幕的 user token , 然後以這個 token 的權限執行程式.


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

    2016年11月24日 上午 09:37
  • http://www.cnblogs.com/maksheiev/archive/2013/04/18/3028309.html

    參考這一篇吧 , 有 code


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

    2016年11月24日 上午 09:41
  • 哇...感謝大大

    謝謝你簡單的說明,我好像有點懂了,

    更謝謝你提供的連結,我明天上班試試,感謝~^_^

    2016年11月24日 下午 12:53
  • 大大,謝謝您的協助,我已解決此問題,可正常顯示了,

    但有另一個問題,就是Client端在瀏覽網頁時,要用這個方法開啟檔案,我發現檔案會在IIS所在的主機開啟,但Client端並未開啟,也無錯誤訊息,請問一下我這是一開始的方向就是錯誤的嗎?

    正確的做法應該是為何呢?再次感謝~~

    2016年11月28日 下午 01:47
  • 你為什麼會認為伺服器端的視窗能在用戶端看到,而且還是開用戶端的檔案...

    你會容許一個網站莫名打開你電腦中的檔案嗎?


    強力監督SQL Injection問題!!

      • 小朱的技術隨手寫:http://www.dotblogs.com.tw/regionbbs/
      • 雲端學堂Facebook: http://www.facebook.com/studyazure

    2016年11月28日 下午 02:47
    版主
  • 你為什麼會認為伺服器端的視窗能在用戶端看到,而且還是開用戶端的檔案...

    你會容許一個網站莫名打開你電腦中的檔案嗎?


    有讚可以點嗎...

    不精確的問法,就會得到隨便猜的答案;自己都不肯花時間好好描述問題,又何必期望網友會認真回答?

    2016年11月28日 下午 04:43
  • 呵...原來如此,感謝小朱大大,

    看來我的想法是不能用的~~XD

    不知要達成這樣的要求要怎麼做呢?這是用在內部的系統,並不會放到Internet上

    雖然問了個笨問題,不過也看到了一直以來錯誤的觀念,謝謝~~^_^

    2016年11月29日 上午 12:36
  • 呵呵....沒讚可以點...不過...可以手動打讚!!~~XD
    2016年11月29日 上午 12:38
  • Web 應用是一種主從式 (client-server) 的解決方案,程式是在伺服器上執行,用戶端是用瀏覽器呈現由伺服器傳送到的資料。

    要處理用戶端的檔案,用戶端要先上傳檔案到伺服器。


    強力監督SQL Injection問題!!

      • 小朱的技術隨手寫:http://www.dotblogs.com.tw/regionbbs/
      • 雲端學堂Facebook: http://www.facebook.com/studyazure

    2016年11月29日 上午 12:56
    版主
  • 小朱大大,

    昨天晚上有上網找了一下...不知這樣子對不對...再煩請指教,謝謝~

    在Controller中讀入檔案,

    var memoryStream = new System.IO.MemoryStream();
    using (var image = System.Drawing.Image.FromFile("\\SrvB\sharefolder\myfile.tif"))
        image.Save(memoryStream, ImageFormat.Png);
    
    return File(memoryStream, "image/png");

    然後再到View中顯示此ActionResult?(我再找找怎麼做)

    謝謝~


    • 已編輯 iamdanfu 2016年11月29日 上午 01:06
    2016年11月29日 上午 01:06
  • Kevin 的 blog 有一份介紹 ASP.NET MVC 檔案上傳的文章, 你可以參考一下

    ASP.NET MVC - 檔案上傳的基本操作 (mrkt 的程式學習筆記)


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

    2016年11月29日 下午 04:53
  • 謝謝!我今天再試一試!
    2016年11月30日 上午 02:07