문제
할 수 있는 방법을 분석 쿼리 문자열은(GET/포스트 매개 변수)을 전송하여 응용 프로그램의 매니페스트에서.NET?
에서 하나 응용 프로그램,내가 전화 MyApp.application
는 요구를 설치.인터넷 응용 프로그램(설치되어 있지 않은 경우)그리고 어떤 경우에 호출해야 응용 프로그램이는 구문 분석해야를 얻을 매개 변수입니다.
나중에 수정:
나는가.NET 응용 프로그램이 설치되어 있어야를 통해 ClickOnce.그것은 이미 출판된 웹 서버입니다.응용 프로그램을 실행하는 호출하여 수행 MyApp.application
에서 파일을 외부 프로그램(written in PHP).이 정상적으로 검사를 위한 업데이트 및 응용 프로그램을 설치하는 경우,필요한 다음 호출은 응용 프로그램 그래서 이 파일은 항상 있을 것입니다에서 호출 외부 응용 프로그램.
외부 응용 프로그램을 보내는 매개변수를 통해 얻을 쿼리를 이 파일을 처리해야 합니다.인터넷 응용 프로그램(매개변수함을 증명 정보기 때문에 이는 가장 쉬운 방법을 볼 수 있을 구현하는 자동 로그인).
는 경우를 얻을 매개 변수를 보냈 MyApp.application
, 수있는 방법,프로세스에서 그들을 MyApp.cs
모든 시간의 시작합니까?
해결책
첫째,당신이 있는지 확인해야 query string 옵션을 사용(프로젝트 속성=>게시=>options=>드러난=>허용 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();
}