Во-первых, вы должны убедиться, что опции строки запроса включены (свойства проекта => publish => options => manifest => allow url параметров ...);
Затем - чтобы разрешить паритет между автономным и веб-интерфейсом, я использую что-то вроде ниже (важный бит ActivationArguments.ActivationData
; вам также понадобится ссылка на System.Deployment.dll
).
Вы также можете посмотреть на System.Deployment.Application.ApplicationDeployment.CurrentDeployment.ActivationUri
, где MSDN имеет хороший пример для здесь .
public static string[] GetStartupArguments() {
List<string> allOptions = new List<string>();
try // command line
{
string[] options = System.Environment.GetCommandLineArgs();
if (options != null) { // strip the first (the exe name)
int length = options.Length;
for (int i = 1; i < length; i++)
allOptions.Add(options[i]);
}
} catch { } // lazy swallow
try // query string
{
if (System.Deployment.Application.ApplicationDeployment.IsNetworkDeployed) {
string[] options = AppDomain.CurrentDomain.SetupInformation.ActivationArguments.ActivationData;
if (options != null && options.Length > 0) {
foreach (string queryItem in new Uri(options[0]).Query.TrimStart('?').Split('&')) {
allOptions.Add(System.Web.HttpUtility.UrlDecode(queryItem));
}
}
}
} catch { } // lazy swallow
return allOptions.ToArray();
}