我開發使用一對夫婦的XML文件來存儲數據的Web應用程序的內容文件。我有自己的生成操作設置爲內容,並在安裝文件被成功複製到應用程序的虛擬目錄:Visual Studio中移動上發佈
C:\inetpub\wwwroot\ApplicationName\
我遇到的問題是,寫這些XML文件(以保存設置並這樣的事情)導致了大量的寫權限的問題。因此,要解決它,我試圖將這些文件從他們安裝到C盤下新建一個目錄的虛擬目錄拷貝,在網絡部署項目使用以下PostBuildEvent:
xcopy "$(TargetDir)*.xml" "C:\CompanyName\ApplicationName\" /y
然而,這什麼都不做。我不知道這是因爲在安裝PostBuildEvents不上安裝實際上解僱,但僅限於建築安裝,或者如果TARGETDIR代表的bin目錄:
C:\inetpub\wwwroot\ApplicationName\bin\
,而不是應用程序根虛擬目錄:
C:\inetpub\wwwroot\ApplicationName\
有沒有人有任何想法?有沒有人處理這樣的事情之前?我真的很難過這個。
更新: 我包括一個PostBuildEvent應該充分權限的所有用戶:
icacls "$(TargetDir)" /grant Users:F
但它似乎並沒有已經解決了這個問題。
我也不清楚到底在哪$(TARGETDIR)如果指向,如果這將是.. \應用程序名稱\或.. \應用程序名稱\ BIN \
絕對文件路徑並不理想,因爲如果虛擬目錄不存在,安裝程序將拒絕編譯,直到安裝完成纔會進行編譯。有沒有辦法以相對的方式訪問它,比如h $(TargetDir)? – Devo 2012-08-09 19:38:47
我決定使用icacls代替cacls,因爲Visual Studio高興地告訴我cacls已被棄用,我不應該使用它。結果顯示,我感興趣的用戶顯然是ApplicationPoolIdentity,但是在運行命令'icacls c:\ inetpub \ wwwroot \ ApplicationName/grant ApplicationPoolIdentity:F'時出現一個錯誤:'帳戶名和安全ID之間沒有映射'。 – Devo 2012-08-09 20:08:54
@Devo請查看編輯 – 2012-08-10 02:27:15