2014-02-19 41 views
0

我有一個文本文件RHKLIS.txt它位於D:\驅動器。我找到了一些代碼來檢索文本文件的 路徑,並且在本地主機中運行時正常工作。我已經在一些測試機器上部署了代碼,使用IIS 7.0 並試圖訪問相同的代碼,但它沒有檢索到它的錯誤提示爲如果(!File.Exists(path))在行中關閉了Sql事務。 所以我知道指定的路徑是代碼中的一個問題。但是我仍然不知道它是什麼類型的錯誤,因爲在同一個測試機器中有一個放置在D:\驅動器中的相同文本文件。當在IIS 7.0中部署時,檢索txt文件會導致錯誤

在web.config中

<appSettings> 

    <add key="LISpath" value="D:\RHKLIS.txt"/> 

</appSettings> 

.cs文件

string path = ConfigurationManager.AppSettings["LISpath"].ToString(); 
    FileStream fs = null; 
    if (!File.Exists(path)) 
    { 
     fs = File.Create(path); 
     fs.Close(); 
    } 

    StreamWriter sw = File.AppendText(path); 

    sw.WriteLine("O~" + billHospNo.Text.Trim() + "~ ~" + opBillNo.Text + "~" + billDate.Text + "~" + itemCode.Text + "~" + itemName.Text + "~" + p.Honourfic + "~" + p.Patient_Name + "~" + p.Gender + "~" + p.Age + "~" + "Y" + "~" + "~" + "~" + "~" + "~" + "~" + department.SelectedItem.ToString() + "~" + billDate.Text + "~" + itemDept.Value + "~" + deptName + "~" + yearOB + "~" + due); 
    sw.Close(); 

回答

0

這是假設你有你的服務器上的完全管理權限。

右鍵單擊該文件夾,選擇屬性。該文件夾的屬性窗口將打開 - 選擇安全標籤。您將看到兩個列表 - 頂部是用戶或組,最下面是權限 - 單擊用戶下的編輯按鈕。

另一個寡婦將打開 - 點擊添加按鈕 - 這將打開另一個窗口。確保位置適用於本地計算機而不是域,然後單擊高級,然後單擊「立即查找」按鈕。查看列表,直到看到IIS_IUSRS用戶並雙擊它。這會將用戶置於選擇窗口的底部文本字段中。只需單擊確定,它會自動爲該用戶提供該文件夾所需的權限 - 然後只需單擊確定,直到所有窗口關閉。

我希望這可以幫助...這允許從IIS只讀訪問該文件夾。

0

這聽起來像一個安全問題。首先,位於D:根目錄下的文件意味着你將打開整個D:到IIS服務器(不是很好的做法)。而是創建一個新文件夾,添加IIS_IUSRS用戶(讀取& execute,列出文件夾內容和讀取權限) - 然後將該文件放入該文件夾中。更改配置文件中的設置,這應該工作...

+0

是否需要添加IIS_IUSRS?是否有其他方法修改代碼來解決問題? –

+0

嗨Shreyas - 是的,它是在服務器架構中繼承的。 IIS服務器將不會看到任何文件夾,除非該用戶已被添加到權限中。所以不,在代碼中不能改變這一點。 – warwickf

+0

想想吧,有什麼要求?你不能通過web服務提供這些信息嗎? – warwickf