2012-10-31 46 views
2

我有一個MVC Web應用程序,它使用模板.xlt和.rpt生成Excel和PDF報告(使用Crystal),當我將模板放入時,它會生成沒有小故障的報告Web服務器本身,但一旦我把模板在遠程位置然後我得到一個訪問被拒絕錯誤,我發現通過過程監控,屏幕截圖如下訪問在MVC Web應用程序的共享文件夾上被拒絕

enter image description here

當我手動瀏覽遠程文件夾通過從服務器的資源管理器它的一切正常,我可以打開我所需要的文件,只是在訪問被拒絕時發生錯誤e服務器讀取文件。我的Web應用程序正在使用Integrated Pipeline中的ApplicationPoolIdentity。身份驗證是通過模擬和Windows身份驗證。甚至令人困惑的是,運行Excel模板的用戶是我自己的,但我得到的訪問被拒絕,而用於生成PDF的用戶是IIS Apppool。

有誰知道如何解決訪問被拒絕的問題,我已經嘗試將所有用戶完全訪問該文件夾,但仍然無法正常工作。

附加信息

我使用IIS 7.5,我還檢查了文件服務器,其中的份額,在事件的日誌註冊的用戶是不是我,但有以下細節

An account was successfully logged on. 

Subject: 
    Security ID:  NULL SID 
    Account Name:  - 
    Account Domain:  - 
    Logon ID:  0x0 

Logon Type:   3 

New Logon: 
    Security ID:  ANONYMOUS LOGON 
    Account Name:  ANONYMOUS LOGON 
    Account Domain:  NT AUTHORITY 
    Logon ID:  0x90eb7c7 
    Logon GUID:  {00000000-0000-0000-0000-000000000000} 

Process Information: 
    Process ID:  0x0 
    Process Name:  - 

Network Information: 
    Workstation Name: MYWEBSERVER 
    Source Network Address: 10.10.10.01 
    Source Port:  00000 

Detailed Authentication Information: 
    Logon Process:  NtLmSsp 
    Authentication Package: NTLM 
    Transited Services: - 
    Package Name (NTLM only): NTLM V1 
    Key Length:  128 

UPDATE

我需要在這種情況下使用ApplicationPoolIdentity,所以我要尋找的是仍然可以使用ApplicationPoolIdent解決方案性。

另一個更新

我想下面@Davids建議,現在我得到同樣的錯誤消息

System.Runtime.InteropServices.COMException(0x800A03EC):微軟 Excel不能訪問文件「 \ MyServer的\模板\ MyTemplate.xlt」。 有幾種可能的原因:

?文件名或路徑不存在。 •另一個程序正在使用該文件 。 ?試圖保存的工作簿與當前打開的工作簿具有相同的 名稱。在 Microsoft.Office.Interop.Excel.Workbooks.Open(字符串文件名,對象 UpdateLinks,只讀對象,對象格式,對象口令,對象 WriteResPassword,對象IgnoreReadOnlyRecommended,對象產地, 對象分隔符,可編輯的對象,對象通知,目標轉換器 對象AddToMru,對象本地,在 Ci.Infrastructure.Reporting.ReportProviderExcel.RunReport()

+0

你爲什麼不嘗試冷杉映射遠程位置的驅動器和第一給正確的用戶權限。如果它是.net,它通常使用「網絡服務」權限。 – user1785999

+0

如果我沒有登錄到Web服務器,它將不會映射到登錄用戶的上下文中,它將如何映射? – Raymund

+0

你有一個域,以便您可以使用NETWORKSERVICE訪問該文件夾:http://www.iis.net/learn/manage/configuring-security/application-pool-identities – AFD

回答

2

對象CorruptLoad)我相信你的問題是因爲應用程序池必須配置爲運行或者作爲域帳戶或網絡服務帳戶。

如果您選擇後者,您需要授予'<domainname>\<machinename>$'的權限,如果您選擇以特定帳戶運行,那麼這是您需要授予權限的用戶。

你已經授予任何人訪問,所以它應該只是改變應用程序池的用戶的情況,但一旦你有工作,我建議你限制這種特定賬戶。

下面的鏈接會給你更多的信息:

http://www.iis.net/learn/manage/configuring-security/application-pool-identities

+0

是啊,我使用ApplicationPoolIdentity,仍然有以上 – Raymund

+1

@Raymund這個問題,對不起,也許我沒有讓它太清楚,你需要從ApplicationPoolIdentity移開並使用任意一種網絡服務或域帳戶。 –

+0

這將是一個問題,因爲我用的是ApplicationPoolIdentity來識別誰在使用內部網應用 – Raymund

相關問題