2010-06-11 120 views
0

我將從appologies開始;我不知道這是否是最好的位置服務器故障的發佈,所以如果它在錯誤的地方,那請移步:-)Asp.net mvc應用程序部署/安全問題

基本信息

我寫了一個新的應用程序在第一模塊工作。這是使用Visual Studio 2010編寫的,目標是.net 3.5(目前)和asp.net mvc 2.在VS開發服務器上運行開發期間,這一直工作正常,但是在部署到IIS 7後卻無法工作/7.5。

要部署應用程序,我已經將它構建在發佈模式下,並通過在解決方案資源管理器中右鍵單擊項目來創建部署包(一旦從測試版升級,將在tfs中自動構建tfs)。這已經被導入到服務器上的IIS中。

該應用程序正在使用Windows /域身份驗證。

問題#1

我可以啓動IE瀏覽器,從客戶端計算機,以及對遠程桌面連接的應用程序。我可以執行從遠程桌面上的IE實例中讀取/存儲會話正常數據的代碼,但如果從客戶端PC瀏覽它,它似乎會失去會話狀態。我點擊表單提交,頁面刷新並且不執行所需的代碼。我試過設置; InProc,SQLServer和StateServer。但沒有運氣:-(

問題2:

作爲應用程序的一部分它認爲在飛行這些都對辦公網絡上的網絡共享PDF和TIFF文件,並創建縮略圖,如果文檔如果在應用程序部署到的計算機上運行,​​則此方法有效;但是,當從客戶端計算機上瀏覽時,出現以下錯誤消息:

訪問路徑'\\ fileserver \ folder \ file.tif'被拒絕 描述:在執行curr期間發生未處理的異常ent web請求。請查看堆棧跟蹤以獲取有關該錯誤的更多信息以及源代碼的位置。

異常詳細信息:System.UnauthorizedAccessException:對路徑'\\ fileserver \ folder \ file.TIF'的訪問被拒絕。

ASP.NET未被授權訪問請求的資源。考慮將資源的訪問權限授予ASP.NET請求標識。 ASP.NET具有基本的進程標識(通常是IIS 5上的{MACHINE} \ ASPNET或IIS 6上的網絡服務),如果應用程序未模擬,則使用該標識。如果應用程序正在通過模擬,身份將是匿名用戶(通常爲IUSR_MACHINENAME)或經過身份驗證的請求用戶。

由於這是在不同的服務器上,用戶無法訪問。爲了解決這個問題,我嘗試過:

1 - 將應用程序池設置爲以域管理員身份運行(我知道這是一個安全風險,但我只是試圖讓它在此刻起作用!)

2 - 將World Wide Web Publishing服務的登錄帳戶設置爲域管理員。當試圖重新啓動服務時,我得到...

Windows無法在本地計算機上啓動萬維網發佈服務服務。

錯誤1079:爲此服務指定的帳戶與爲同一進程中運行的其他服務指定的帳戶不同。

任何指針/幫助將非常appriciated,因爲我拉我的頭髮(我什麼都沒有離開)。


更新

我一直在使用這種時髦的小工具,我發現 - DelegConfig v2 beta (Delegation/Kerberos Configuration Tool)。這已經非常有用了。所以我有訪問文件共享工作(有一個測試頁面將讀取文件),所以現在我剛剛得到了通過用戶憑據通過SQL Server的問題(無論我選擇這樣做!!)執行查詢等,但我不能讓它作爲用戶登錄。它試圖以「NT Authority \ Network Service」的身份訪問它,它沒有sql登錄名(應該是登錄用戶)。

我的連接字符串是:由於系統是在多個DBS指定

<add name="User" connectionString="Data Source=.;Integrated Security=True" providerName="System.Data.SqlClient" /> 

沒有初始目錄(也就是不是我的選擇!)。

到目前爲止,我真的很熟悉所有的幫助! :-)

還有什麼提示?

回答

0

最後最後一件事,上週五我得到它的工作...

正如我在更新說,對於整理出憑證委託的工具是非常方便和幫助沒有盡頭設置正確的SPN記錄。

我發現我還必須將它設置爲SQL,因爲我通過憑據傳遞到服務器。另一件事,我發現停止連接是一些入站Windows防火牆設置導致問題。

對於連接字符串;我不得不更新到:

<add name="ConnectionStringName" connectionString="Data Source=.;Integrated Security=SSPI;Trusted_Connection=True" providerName="System.Data.SqlClient" /> 

鏈接,我發現有用:

Kerberos Authentication and SQL Server

DelegConfig

即使壽它主要是關於SharePoint會談...... this也是有用的。

希望這可以幫助未來的人。

0

隨着信息這一小部分,我只能提供一些提示:

問題#1: 也許你有一個誤導性的URL作爲表單動作?或者被抓到的&忽略異常?你的global.asax.vb中有一個onError事件嗎?

Sub Application_Error() 
    Dim ex As Exception = Server.GetLastError 
    ' NOW HANDLE THE EXCEPTION --> REPORTING :-) 
End Sub 

問題2: 最近我有同樣的例外 - 我不得不檢查訪問權限的用戶對這個文件夾,並設置程序池身份爲「NETWORKSERVICE」。在你的情況下,你甚至試圖訪問一個網絡文件夾 - 檢查服務器上的訪問權限,並嘗試使用IP而不是名稱 - 這可能是一個名稱解析問題?!

對這一小部分信息感到抱歉......這看起來像只能通過運行服務器上的直接調試選項才能解決的問題。

1

問題2 - 您的選擇是:

  • 配置代表團(雙跳認證) - 我還沒有IIS7這樣做,這是6個不同的一點,但我相信你會需要在AD中啓用Web服務器計算機帳戶進行委派,併爲Web服務器創建SPN(例如setspn -A http/<Web Server FQDN> <Domain>\<Machine Name>)。對Kerberos進行故障排除可能會非常痛苦。
  • 授權訪問網絡資源的(域)的應用程序池帳戶,並確保匿名身份驗證打開(<anonymousAuthentication enabled="true" userName="" defaultLogonDomain="" />

響應更新:

您需要確保Kerberos身份驗證適用於SQL Server。運行查詢select auth_scheme from sys.dm_exec_connections where [email protected]@spid;它將返回NTLM或KERBEROS。如果是NTLM,則需要做一些配置SQL Server以使用Kerberos的工作。在AD中爲SQL服務帳戶設置SPN:setspn -A MSSQLSvc/<SQL Server FQDN>:1433 <Domain>\<Sql Service Account>,重新啓動SQL Server並再次嘗試查詢。您必須使用TCP/IP作爲連接機制(這是默認設置)。

如果您沒有初始目錄,則需要確保所有用戶登錄都具有他們有權訪問的默認數據庫。我會親自選擇一個數據庫作爲初始目錄,因爲根據登錄配置的方式,您可能會得到不同的行爲。