从ActivationUri获取查询字符串 - 控制台应用程序c#

时间:2018-01-15 10:25:28

标签: c# console-application query-string

我目前正在通过网址启动控制台应用程序,并尝试从该网址获取查询字符串。如果我使用URL和查询字符串设置变量,它可以正常工作,但是当我尝试使用浏览器中的URL调用它时,它会给我一个

  

System.NullReferenceException:未将对象引用设置为实例   对象

这里

  

string queryString = ApplicationDeployment.CurrentDeployment.ActivationUri.Query;

我在其他地方看到过这项工作(包括同事的VB应用程序),所以我知道我正走在正确的轨道上。任何帮助都将受到大力赞赏。

using System;
using System.Diagnostics;
using System.IO;
using System.Web;
using System.Deployment.Application;
using System.Collections.Specialized;

namespace DRFLoader
{
    internal class Program
    {
        static void Main(string[] args)
        {

            if (ApplicationDeployment.IsNetworkDeployed)
            {
                 string queryString = ApplicationDeployment.CurrentDeployment.ActivationUri.Query;
                var DMNo = HttpUtility.ParseQueryString(queryString);
                //Do stuff with DMNo here

            }
            else
            {

                string uri = "http://intra/drfloader/drfloader.application?1232222";
                var queryString = new Uri(uri).Query;
                var DMNo = HttpUtility.ParseQueryString(queryString);
                //Do stuff with DMNo here

            }

        }
}
}

提前致谢, 丹

更新 - 异常数据如下:

Stacktrace:在DRF.Loader.Program.Main(String [] args) 数据:System.Collections.ListDictionaryInternal 消息:对象引用未设置为对象的实例。

这是否意味着它正在寻找某种类型的集合?

1 个答案:

答案 0 :(得分:0)

我发现了问题,我的代码没有任何问题。它是单个复选框的诅咒

  

启用ClickOnce应用程序中的查询字符串传递   MageUI.exe打开.NET命令提示符并键入:

     

MageUI

     

从“文件”菜单中,选择“打开”,然后打开部署清单   你的ClickOnce应用程序,它是以。结尾的文件   .application extension。

     

在左侧导航栏中选择“部署选项”面板   窗口,然后选择允许传递给的URL参数   申请复选框。

     

从“文件”菜单中,选择“保存”。

     

或者,您可以在Visual Studio中启用查询字符串传递。   选中“允许传递给应用程序的URL参数”复选框,   可以通过打开项目属性找到,选择   单击“发布”选项卡,单击“选项”按钮,然后选择   清单。

基本上只是在最后一段中做了一点。

Found it here