2012-06-30 62 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