Самый простой и интуитивно понятный способ получить абсолютный URI и манипулировать его строкой запроса с использованием пакетов ASP.NET Core, можно сделать несколькими простыми шагами:
PM> Install-Package Microsoft.AspNetCore.WebUtilities PM> Install-Package Microsoft.AspNetCore.Http.Extensions
Чтобы указать на них, вот два важных класса, которые мы будем использовать: QueryHelpers , StringValues , QueryBuilder .
// Raw URI including query string with multiple parameters
var rawurl = "https://bencull.com/some/path?key1=val1&key2=val2&key2=valdouble&key3=";
// Parse URI, and grab everything except the query string.
var uri = new Uri(rawurl);
var baseUri = uri.GetComponents(UriComponents.Scheme | UriComponents.Host | UriComponents.Port | UriComponents.Path, UriFormat.UriEscaped);
// Grab just the query string part
var query = QueryHelpers.ParseQuery(uri.Query);
// Convert the StringValues into a list of KeyValue Pairs to make it easier to manipulate
var items = query.SelectMany(x => x.Value, (col, value) => new KeyValuePair(col.Key, value)).ToList();
// At this point you can remove items if you want
items.RemoveAll(x => x.Key == "key3"); // Remove all values for key
items.RemoveAll(x => x.Key == "key2" && x.Value == "val2"); // Remove specific value for key
// Use the QueryBuilder to add in new items in a safe way (handles multiples and empty values)
var qb = new QueryBuilder(items);
qb.Add("nonce", "testingnonce");
qb.Add("payerId", "pyr_");
// Reconstruct the original URL with new query string
var fullUri = baseUri + qb.ToQueryString();
Чтобы обновляться с любыми изменениями, вы можете узнать об этом в моем блоге: http://benjii.me/2017 / 04 / синтаксический анализ изменение-запрос-строка-Asp-нетто-ядро /
Я и еще один соратник по-разному используем PostSharp в нескольких проектах, которые находятся в разработке и были в течение нескольких месяцев. Например, в одном случае я использую его для записи значений параметров метода в случае исключения. PostSharp Laos (входит в PostSharp) - это простой в использовании способ ввода вызовов методов (например, при входе в метод, при выходе и при исключениях), и вы можете легко добавить вызовы журнала в зарегистрированные регистраторы log4net.
Это увеличило время сборки, достаточно, чтобы немного изменить мои привычки сборки, но, конечно, не слишком много для преимуществ, которые оно дает, IMO. При написании кода вы, возможно, захотите исключить его из локальной сборки, что достаточно легко сделать, поэтому вы можете продолжать собирать часто и быстро, а затем включить его на свой сервер сборки и т. Д.
Вот хорошее руководство по PostSharp от Gael (создатель PostSharp) ... хотя оно старое, приятно видеть его прогон. На самом деле нет никакой разницы в использовании его в консоли, winforms, WPF или WebApp, с которыми я до сих пор сталкивался.
Я бы также сказал, что, как только вы поймете, как добавить аспекты Лаоса в проект, повторить упражнение очень легко. Кроме того, существует зависимость между количеством сборок / классов, к которым вы применяете аспекты, и количеством времени, которое PostSharp добавляет к вашей сборке. Таким образом, вы даже можете немного контролировать время сборки.
Что касается кода, я очень впечатлен тем, насколько хорошо работает PostSharp ... он никогда не испортил сборку, не сделал сборку недействительной или не испортил код другим способом. И я даже использовал его в приложениях ASP.NET, с охватом кода и инструментами производительности (поэтому он прекрасно работает с инструментами инструментов сборки MS).
В целом, я бы определился. рекомендую попробовать его в соответствии с требованиями log4net.
Я использую Пострезкий, и мне нравится он. Это сохранение меня много дублированного кода я должен был добавить иначе.
мне не были нужны никакие расширенные функции для log4Net, и Google достаточно, чтобы узнать, как это работает. Это просто делает задание. Я не видел недостатков до сих пор.
Для Пострезкого, руководство по началу работы на веб-сайте, блог и просматривание источника достаточно. Главный недостаток является увеличенным временем изготовления. Я очень не хочу ожидать своего компьютера, чтобы сделать работу. Требуется приблизительно 8 секунд для нажатия ctrl-shift-b в Visual Studio (на быстром ПК) для +-60K решение для местоположения с 2 проектами с помощью пострезкого действия сборки. Если Вы можете, попытаться использовать Пострезкий в наименьшем количестве суммы возможных проектов.
, Когда Вы действительно не хотите использовать пострезкий, можно создать решение с 20 проектами и добавить команду постсборки к каждым из них. Время изготовления будет достаточно долго для раздражения остальной части команды.
Лично я, вероятно, продолжу использовать Пострезкий для будущих проектов. Преимущества отвергают дополнительное время изготовления.
Мы пытались использовать Post Sharp для одной или двух вещей, проблема заключалась в том, что время сборки было слишком долгим. Если вы используете CI и используете методологию частой регистрации, вам лучше иметь чертовски хороший сервер сборки и рабочие станции.
Очевидно, что в .net 4.0 будет множество хуков компилятора, чтобы сделать такие вещи, как AOP, проще. Наш окончательный вывод состоял в том, чтобы ждать этого.
Я использую пост резкий, мне это нравится. Время пост-острой сборки раздражает, но оно само по себе не в состоянии. В режиме отладки я использую условный SKIPPOSTSHARP, который устраняет пост-резкость.
Согласно PostSharp Community Survey , многие компании используют PostSharp в производстве. Огорчает то, что они отказываются быть опознанными: - (.
Мы используем PostSharp в производстве, как для среды выполнения 3.5, так и для среды Silverlight. Чтобы немного ускорить сборку, вы можете использовать ключ / m: для msbuild (google для параллельных сборок с msbuild). Они также обещают значительно ускорить его в следующем выпуске.