IronBarCode生成QRCode转Stream/Byte[]报错问题咨询
解决IronBarCode生成二维码转Stream/Byte[]时的路径语法错误问题
问题原因
你遇到的报错并非因为传入URL格式字符串,而是可能对ToJpegStream()和ToJpegBinaryData()方法的使用存在误解,或是旧版本IronBarCode的方法实现存在异常。这两个无参方法本应直接返回内存流或字节数组,无需传入文件路径。
解决方案
方案1:使用SaveAsJpeg方法写入内存流(替代原方法)
绕过可能存在问题的ToJpegStream()和ToJpegBinaryData(),直接通过SaveAsJpeg将二维码写入MemoryStream,再转换为所需类型:
var absolute = Request.Scheme + "://" + Request.Host + url; var qrcode = IronBarCode.QRCodeWriter.CreateQrCode(absolute); qrcode.AddAnnotationTextAboveBarcode(device.Name); qrcode.AddBarcodeValueTextBelowBarcode(absolute); // 获取Byte[] byte[] byteArray; using (var ms = new MemoryStream()) { qrcode.SaveAsJpeg(ms); byteArray = ms.ToArray(); } // 获取Stream(使用前需重置流位置) Stream qrStream = new MemoryStream(); qrcode.SaveAsJpeg(qrStream); qrStream.Position = 0;
方案2:更新IronBarCode至最新版本
如果坚持使用ToJpegStream()和ToJpegBinaryData(),尝试更新IronBarCode到最新稳定版,旧版本的方法可能存在参数解析异常的bug:
- 通过NuGet包管理器更新
IronBarCode包
额外检查项
确认device.Name和absolute变量中不存在系统路径敏感字符(如\、/、:等),虽然注释文本不应影响路径解析,但极端情况可能触发异常。
内容的提问来源于stack exchange,提问作者alrightgame
相关产品推荐
相关产品推荐

