编译后解码JSON命令行参数失败,但在调试期间成功



我正在构建一个C#应用程序,该应用程序处理web应用程序中使用的自定义协议。

链接如下:

<a href="zebra-wp://%7B%22barcode%22%3A63%2C%22name%22%3A%22Food%20Fun%20-%20Magnetic%20Multicultural%20set%22%7D">Print</a>

这些都是使用windows注册表中的处理程序处理的(URL:zebrawpProtocol(:

"C:Program Files (x86)[My App Name][My App].exe" "%1"

我正在我的应用程序中运行以下代码:

class LabelData
{
public string name;
public string barcode;
}
static class Program
{
[STAThread]
static void Main(string[] args)
{
if (args.Length > 0 && args[0].StartsWith("zebra-wp://"))
{
// retrieve data from argument
string argData = args[0].Remove(0, 11);
string decodedJson = "";
try
{
// Undo URL Encoding
decodedJson = WebUtility.UrlDecode(argData);
}
catch (Exception ex)
{
string msg = "Couldn't print label, failed to decode data.";
msg += "nData: " + argData;
msg += "Error: " + ex.Message;
MessageBox.Show(msg);
Application.Exit();
}
// Unpack JSON string
LabelData decodedData = new LabelData();
try
{
decodedData = JsonConvert.DeserializeObject<LabelData>(decodedJson);
}
catch (Exception ex)
{
string msg = "Couldn't print label, failed to unpack data.";
msg += "nData: " + decodedJson;
msg += "Error: " + ex.Message;
MessageBox.Show(msg);
Application.Exit();
}
// Do things with object

当我调试应用程序时;命令行参数";启动选项。程序按预期工作,JSON数据被成功解码。

当我构建和安装时,JsonConvert.DeserializeObject函数会给我以下错误:

Data: {"barcode":"000063","name":"Food Fun - Magnetic Multicultural set"}
Error: Unexpected end while parsing comment. Path '', line 1, position 68.

VS在调试中如何启动带有命令行参数的应用程序,这有什么不同吗?有没有一种方法可以使用与我单击URL时相同的命令行参数调试应用程序?

我发现了这个问题,很明显,当将URI传递给自定义协议处理程序时,Windows在URI中添加了一个尾随的正斜杠,在代码中检查并删除它可以解决问题。

相关内容

最新更新