Я скачал исходный код из Managed Fusion и добавил проект в свое решение.
Я искал и обнаружил этот фрагмент кода ниже, который добавляет QueryString.Я обновил код, добавив новый метод для удаления КОДА строки запроса и прикрепления ФИКСИРОВАННОГО.
Я также добавил параметр для управления ФИКСИРОВАННЫМ значением, назначенным КОДУ.
private Uri AppendQueryString(Uri substituedUrl, Uri existingUrl)
{
string append = existingUrl.Query.TrimStart('?');
if (!String.IsNullOrEmpty(append))
{
UriBuilder builder = new UriBuilder(substituedUrl);
if (String.IsNullOrEmpty(builder.Query) || builder.Query == "?")
builder.Query = append;
else
builder.Query = builder.Query.TrimStart('?') + "&" + append;
return AppendFixedQueryString(builder.Uri, existingUrl);
}
return AppendFixedQueryString(substituedUrl, existingUrl);
}
ДОБАВЛЕН НОВЫЙ МЕТОД
private Uri AppendFixedQueryString(Uri substituedUrl, Uri existingUrl)
{
string append = string.Format("CODE={0}", Settings.Default.CODE);
if (!String.IsNullOrEmpty(append))
{
UriBuilder builder = new UriBuilder(substituedUrl);
builder.Query = Regex.Replace(builder.Query, @"CODE=([0-9]+)", String.Empty);
if (String.IsNullOrEmpty(builder.Query) || builder.Query == "?")
builder.Query = append;
else
builder.Query = builder.Query.TrimStart('?').Trim("&".ToCharArray()) + "&" + append;
return builder.Uri;
}
return substituedUrl;
}
С этой модификацией.даже если пользователь явно наберет CODE = 123 в URL, он будет просто проигнорирован и ему будет присвоено фиксированное значение CODE