Приложение .NET ClickOnce.Можно ли разрешить де URL или домен страницы, с которой он был запущен? - PullRequest
0 голосов
/ 16 марта 2012

С одной стороны, у меня есть настольное .NET-приложение, развернутое в виртуальном каталоге с ClickOnce. С другой стороны, есть веб-приложение Java EE со ссылкой на URL публикации приложения dekstop .NET.

Например, на странице страницы http: //mydomain.com/page.jps у нас может быть ссылка на http: //otherdomain.com/apps/mydesktoapp.application

Мне бы хотелось, чтобы приложение .NET для настольных ПК знало URL или домен, из которого оно было вызвано ( http: //mydomain.com/page.jps)

.

Я знаю, что мы можем передавать параметры в URL-адрес публикации, но я бы предпочел не использовать это.

Заранее спасибо!

Ответы [ 2 ]

2 голосов
/ 16 марта 2012

Приложение не может получить страницу реферера, поскольку она полностью независима от потока HTTP. Приведенный выше код Wikor покажет вам фактический URI запущенного приложения, но не реферрер.

Если вы не размещаете страницу развертывания в динамическом языке (php, asp, jsp) и настраиваете страницу развертывания, чтобы встроить ссылку http и передать ее приложению в качестве параметра запуска.

private NameValueCollection GetQueryStringParameters()
{
    NameValueCollection nameValueTable = new NameValueCollection();

    if (ApplicationDeployment.IsNetworkDeployed)
    {
        string queryString = ApplicationDeployment.CurrentDeployment.ActivationUri.Query;
        nameValueTable = HttpUtility.ParseQueryString(queryString);
    }

    return (nameValueTable);
}

Однако вы должны знать, что это означает, что вы полностью осведомлены о том, работает ли ваше приложение в сети или в автономном режиме. В случае автономного режима вы почти уверены, что он будет активирован только один раз с помощью URL-адреса, а затем будет запущен через пункт меню «Пуск». Кроме того, вы должны убедиться, что приложение может работать без запроса или с поврежденным запросом.

Надеюсь, что помог

0 голосов
/ 16 марта 2012
if ( System.Deployment.Application.ApplicationDeployment.IsNetworkDeployed )
{
    string activationUri = System.Deployment.Application.ApplicationDeployment.CurrentDeployment.ActivationUri;
}
...