2012-06-30 142 views
2

我的字符串變量只能存儲4096個字符,我需要存儲更多,我該如何實現?字符串變量字符限制

下面是什麼,我試圖做

ServiceController[] myServices = ServiceController.GetServices(); 
String ServiceList = ""; 

foreach (ServiceController service in myServices) 
{ 

     ServiceList += service.DisplayName + "|||"; 

} 
return ServiceList; 

當返回變量,它只能存儲4096個字符,其餘的都剪掉。

P.S.我需要他們在一個變量,因爲我正在做一個URL並傳遞給我的web服務。

+0

.Net字符串的最大長度爲2^31個碼點,而不是2^12。 –

+0

你可以使用StringBuilder而不是簡單的字符串,但我強烈建議你閱讀答案並思考一個新的解決方案。網址應儘可能短。 –

+0

那麼它爲什麼只存儲2^12個字符? –

回答

4

我需要他們在一個變量,因爲我正在做一個URL,並傳遞給我的web服務。

不,不要這樣做!

4096個字符的URL是一個非常糟糕的主意,並不能保證能夠正常工作。

極長的URL通常是一個錯誤。超過2000個字符的網址在最流行的網絡瀏覽器中無法使用。如果您打算讓您的網站爲大多數互聯網用戶工作,請不要使用它們。

(source)

使包含一個id一個縮短的URL。將其餘的信息存儲在數據庫中,並使用短ID作爲密鑰。

相關

+0

實際上,我只是從我的代碼中調用一個網頁,並將該變量作爲參數傳遞。該網頁只爆炸字符串並插入數據庫。我沒有其他選擇,因爲Windows服務不能訪問數據庫。我需要走這條路...... –

+0

@UzairShahid:.NET字符串沒有4096個字符的最大長度。您正在錯誤的地方尋找錯誤。 –

0

在C#中的字符串具有約2Gig limit.so可能是您的字符串變量

3

.NET字符串長度的限制沒有問題是20億字符。

瀏覽器對他們將接受的URL的長度有限制,並且瀏覽器實現的長度限制是不同的。 IE的限制通常是最短的,在我上次檢查IE6時代的2K左右。 Firefox和Chrome比這要高得多,但仍然有限制。

+0

謝謝你,但爲什麼我的變量只能存儲4096個字符? –

+1

你如何看待該字符串只包含4096個字符?你是否在函數返回之前在調試器中檢查變量?或者你在通過數十個系統圖層獲得價值後,是否在尋找一些網絡結果? – dthorpe

0

你的問題是其他地方 - 但它無法可靠地使用,使用超過2000個字符的URL,則需要另一種方法完全 - 看到這樣的SO回答:What is the maximum length of a URL?

(也可用於建造大型字符串使用代替StringBuilder