2012-10-30 100 views
2

我有一個奇怪的問題在這裏,我不知道,如果它的ASP.NET版本,IIS,或我在做一些愚蠢的事(的經驗告訴我它可能是第3項)貨幣在不同的網站

格式不同我有2個網站在w2k3上運行正常,1是ASP.NET 1.1,另外2.0是在網頁上正確顯示貨幣。

由於遷移到一個w2k8框和IIS 7我有一個奇怪的問題,1.1站點現在顯示$而不是用戶瀏覽到的本地貨幣。但2.0站點工作正常。

兩者都將IIS設置爲相同的全球化。 (沒有文化,客戶是虛假的,UI文化是英語(en))。

這兩個站點都託管在同一臺服務器上,我可以看到的唯一區別是: 1使用<Databinder.Eval(... Price, "{0:c}")>進行綁定,另一個綁定使用String.Format("{0:c}");

因此,由於代碼沒有改變,我覺得這是一個IIS問題。但是,由於這兩個站點在IIS中具有相同的全球化設置,我不認爲它可以。

所以,任何人都知道什麼是什麼和如何解決它?

+0

看看這個其他答案可能的解決方案:http://stackoverflow.com/a/5763347/139917 – DaveB

+0

明天我會看看,但因爲這是舊的/笨重的網站,曾經工作我試圖避免干擾,如果可能:) 謝謝,我會回來,如果我必須沿着這條路線 – Matt

+0

是否可以添加一些調試代碼到您的應用程序?例如在你輸出當前文化的global.asax中?你是否對所有網站使用相同的瀏覽器? – Remy

回答

0

從新服務器上的控制面板檢查區域和語言選項,並確保它們與舊盒子上的類似設置相匹配。

+0

他們這樣做,但如果他們沒有;那麼我希望這兩個網站在usd工作,而不是一個在usd和一個在gbp。 – Matt

0

AFAIK,至少String.Format("{0:c}")和可能<Databinder.Eval(... Price, "{0:c}")>以及將使用任何值System.Threading.Thread.CurrentCulture屬性。

無論您是否將其設置在頁面上,該值都將被分配給它。想想,這些設置來自服務器設置是非常合理的,服務器設置從您的描述中看來是en-US。因此,$作爲貨幣符號...你可能會問自己爲什麼它以前工作...
那麼,你確定你已經複製了所有的配置文件?
另一個線索可能是,你已經模擬了.NET 1.1的版本,而不是新盒子上的真實版本。它可能不是100%兼容...

+0

服務器設置爲英國文化和英國貨幣符號等 我相信你可能是正確的,而這個問題源於它不是真的1.1。 我將不得不實施代碼修復,以強制每個頁面到正確的文化來解決這個問題。 (或者用它作爲預算升級網站的理由。) – Matt