2013-11-01 34 views
2

我有兩個網站共享應用程序池.Net V4.0 Integrated
一個站點是ASP.NET MVC 4,另一個是VB.NET WebsiteIIS 7工作進程掛在共享應用程序池中。這兩個網站之一工作正常

他們雙方包含共享登錄信息和服務器會話在web.config

<authentication mode="Forms"> 
    <forms loginUrl="http://www.example.com/login.aspx" name=".MYCUSTOMAUTH" protection="All" path="/" domain=".example.com" timeout="30" /> 
</authentication> 
<httpCookies domain=".example.com" /> 
<sessionState mode="StateServer" stateConnectionString="tcpip=loopback:42424" /> 
<machineKey validationKey="XXX" decryptionKey="XXX" validation="SHA1" /> 

下面我也是在Global.asax Application_Start設置應用程序的名稱使用以下內容:

FieldInfo runtimeInfo = typeof(HttpRuntime).GetField("_theRuntime", BindingFlags.Static | BindingFlags.NonPublic); 
HttpRuntime theRuntime = (HttpRuntime)runtimeInfo.GetValue(null); 
FieldInfo appNameInfo = typeof(HttpRuntime).GetField("_appDomainAppId", BindingFlags.Instance | BindingFlags.NonPublic); 
appNameInfo.SetValue(theRuntime, "MyApplicationName"); 

主站點位於www.example.com顯示一個lo杜松子酒屏幕上,正確登錄時會創建對象會話並將用戶重定向到subdomain.example.com
問題是Worker線程無限期地掛起每個線程。這個設置在我昨晚6點離開時正常工作,但是當我在今天早上9點嘗試登錄時,它沒有停止工作。

我重新部署了這兩個站點,回收了應用程序池,刪除並創建了新的應用程序池,重新啓動了ASP.NET狀態服務。一切都重新啓動整個IIS服務,這是不是真的一個選項,直到週日凌晨3:00 ...
即使重新啓動IIS服務器可以暫時解決問題,它不會是每天可以完成的事情如果問題繼續存在。

此外,服務器永遠不會超時連接,除非手動結束進程,否則在事件日誌中不會產生錯誤或警告。

+0

我知道這不太理想,但他們可以作爲獨立的應用程序池運行嗎?我相信你已經想到了這一點...... –

+0

這是我的理解是,要正確地共享會話,他們需要在同一個應用程序池中,但我現在就試一試。 –

+0

結果是相同的應用程序掛起...它也不會解釋,而它昨天工作了幾個小時 –

回答

0

他們確實需要在同一個應用程序池中才能共享會話信息 如果嘗試使用它,應用程序池回收後會立即掛起嗎?

您需要確定引起掛起的操作 - (例如,在任一站點上單擊登錄按鈕)。你爲什麼使用customauth而不是表單身份驗證?

相關問題