2012-10-02 74 views
1

我一直在我的網站上使用.NET MessagingToolkit.QRCode庫,以便生成具有自定義圖像的QR碼,直到現在,我完全沒有任何問題。圖書館。.NET MessagingToolkit QRCode編碼問題

最近,由於系統增長,我需要編碼的數據變得越來越大,並試圖在QR代碼中編碼此數據導致QRCodeEncoder類的Encode方法內部「索引超出範圍」異常。

通過測試,我注意到這個方法似乎接受的最大字符數是86,而大於這個值的任何東西都會拋出異常。更改傳入的字符串的編碼類型不起作用。

我確實注意到我使用的庫的版本已經過時,但是,更新到最新版本也沒有解決問題。

是否有其他人遇到過這個問題,並找到了解決方案?另外,是否有另一個我可以使用的庫,它沒有這樣的問題?

的異常細節都低於:

2012-10-01 17:39:52,098 Error: System.IndexOutOfRangeException: Index was outside the bounds of the array. at MessagingToolkit.QRCode.Codec.QRCodeEncoder.divideDataBy8Bits(Int32[] data, SByte[] bits, Int32 maxDataCodewords) at MessagingToolkit.QRCode.Codec.QRCodeEncoder.calQrcode(Byte[] qrcodeData) at MessagingToolkit.QRCode.Codec.QRCodeEncoder.Encode(String content, Encoding encoding) at MessagingToolkit.QRCode.Codec.QRCodeEncoder.Encode(String content)

回答

2

在該庫的官方頁面上有對你的問題的解決方案的簡短描述:http://platform.twit88.com/news/60。我不知道這是否能解決您的問題。我會找到庫的源代碼並通過它進行調試以查看錯誤的原因。

hm ...無法在任何地方找到源代碼。因此,請與作者聯繫並詢問他們。

如果這樣做不起作用,我會將庫改爲別的。我已經成功使用了MVC的QrCode.Net,並且有一些示例代碼,如果您願意,可以將其與MVC整合。

+0

不知何故,設置版本號顯示解決我的問題,我可以不再打了一個字符的限制...多奇怪的錯誤,但非常感謝! – Jonk268

+0

很高興幫助! – trailmax

1

我知道這個帖子是有點老了,但我遇到了同樣的問題,我發現我在我的字符串(」)非法字符,其中QR碼不承認。與常規的引號(「)替換這一點,它工作得很好。

-1

同樣的問題,但是當換版爲0,它的工作。

+2

如果您打算將「version to 0」更改爲答案,您可以稍微擴展此答案。 – ugo

0

我經歷了同樣的問題,但是我發現,創造了編碼器的新實例每次我打電話給Encode方法解決了問題。

0

QRCodeEncoder qrCE = new QRCodeEncoder(); 
qrCE.QRCodeEncodeMode = QRCodeEncoder.ENCODE_MODE.BYTE; 
qrCE.QRCodeErrorCorrect = QRCodeEncoder.ERROR_CORRECTION.L; 
qrCE.QRCodeVersion = 1; 

picQRCode.Image = qrCE.Encode(memBarcodeDataForPrint.Text, System.Text.Encoding.UTF8); 

我改變了下面這一行同樣的問題

qrCE.QRCodeVersion = 1;

qrCE.QRCodeVersion = 0;

它解決。