Вот еще один подход к написанию Notification Service в ASP.Net REST API.
public async Task<bool> NotifyAsync(string to, string title, string body)
{
try
{
// Get the server key from FCM console
var serverKey = string.Format("key={0}", "Your server key - use app config");
// Get the sender id from FCM console
var senderId = string.Format("id={0}", "Your sender id - use app config");
var data = new
{
to, // Recipient device token
notification = new { title, body }
};
// Using Newtonsoft.Json
var jsonBody = JsonConvert.SerializeObject(data);
using (var httpRequest = new HttpRequestMessage(HttpMethod.Post, "https://fcm.googleapis.com/fcm/send"))
{
httpRequest.Headers.TryAddWithoutValidation("Authorization", serverKey);
httpRequest.Headers.TryAddWithoutValidation("Sender", senderId);
httpRequest.Content = new StringContent(jsonBody, Encoding.UTF8, "application/json");
using (var httpClient = new HttpClient())
{
var result = await httpClient.SendAsync(httpRequest);
if (result.IsSuccessStatusCode)
{
return true;
}
else
{
// Use result.StatusCode to handle failure
// Your custom error handler here
_logger.LogError($"Error sending notification. Status Code: {result.StatusCode}");
}
}
}
}
catch (Exception ex)
{
_logger.LogError($"Exception thrown in Notify Service: {ex}");
}
return false;
}
Ссылки:
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.Logging;
using Newtonsoft.Json;
using System.Net.Http;
using System.Text;
using System.Threading.Tasks;
Мы использовали Ajax ASP.NET, jQuery и компоненты Telerik на крупном проекте долгое время и не имели никаких проблем
Я определенно рекомендовал бы использовать jQuery
Разработчики Ajax ASP.NET сделали определенные шаги, чтобы удостовериться, что библиотекой можно было пользоваться в сочетании с jQuery.
Например, CTP ATLAS (бета, которая стала Атласом ASP.NET) раньше имел $ () функция, но это было удалено и заменено $get ().
jQuery имеет noConflict () метод как часть ядра, но это затем требует, чтобы Вы или использовали jQuery в качестве своей именованной функции или чего-то еще Вашего выбора (вместо долларового селектора). Однако я скажу, что метод часто зависит от реализации "конкурирующей" библиотеки. Я попытался использовать его для социальной сети Ning (который использовал Dojo), и для Magento (который использует Прототип), и я не мог заставить ни одного играть прямо с jQuery. Это - просто мой личный опыт, и другие были очень успешны.
Одна оборотная сторона - то, что серверные средства управления могут быть переименованы, в зависимости от их контейнеров. Например, Вы могли бы иметь:
<asp:panel id="panel1" runat="server"></asp:panel>
Это может быть представлено к странице как:
<div id="ctl00$panel1"></div>
Таким образом, если Вы пишете использование jQuery $('#panel1')
как селектор, это не будет работать. Путь вокруг этого состоит в том, чтобы генерировать идентификатор динамично, например:
Dim js as String = "$('" & panel1.ClientID & "').whatever();"
Это может сделать JavaScript немного нечитабельным, но он действительно работает вполне хорошо. Я работаю над большим веб-приложением с помощью этого метода, и jQuery сохранил нас ТОННА времени, не говоря уже о создании вида сайта и работает намного лучше.
Если это имеет значение нет никакого конфликта между функцией $ jQuery, и $ Ajax ASP.NET снабдил префиксом функции ярлыка ($get, $find, $create, и т.д.). Все равно как использование переменной f не препятствует тому, чтобы Вы использовали переменную, названную нечто.
jQuery и Ajax ASP.NET работают хорошо вместе в большинстве случаев. В прошлом году единственное время, я видел, что Ajax ASP.NET взламывает код jQuery, было этим сценарием с jDrawer. Обходное решение не было плохо все же.
Я использовал расширение, которое является другой платформой JavaScript с .NET. Намного легче использовать, чем старомодные средства управления HTML-формой
<input type="text" id="whatever" />
Чем использование ASP.net формируют средства управления. Вы, вероятно, хотите использовать прохладную проверку формы платформы JavaScript в противоположность не так большой созданный в блоках проверки допустимости .NET также, но я предполагаю, что это до Вашего предпочтения
Если Вы действительно хотите продолжить использовать средства управления .NET, помните, что идентификатор, сгенерированный в разметке, отличается от того, что Вы определяете, поэтому если Вы хотите сослаться на управление идентификатором в использовании JS:
<%=MyControlId.ClientID%>
По-видимому, Telerik начала добавлять jQuery к некоторым их RadControls, начав с Q3 выпуска.
Я использую и jQuery и RadControls, но не имел времени, чтобы дальше изучить эту запутанность... мог качать оба пути....
У меня есть omnius, чувствующий, что это влечет за собой больше clusterf ***, но это просто основано на общем опыте с частью этого и немного того ;-)
Проверьте блог Atanas Korchev в Telerik на просто этом предмете:
http://blogs.telerik.com/AtanasKorchev/Posts/08-11-06/ASP_NET_Ajax_Controls_and_jQuery.aspx
и всего наилучшего нам всем, когда MS, jQuery, Telerik, JP Morgan и Макдоналдс все смешивают и делают пюре на наши рабочие столы... ;-)
Последняя разработка связана с этим вопросом:
Scott Guthrie отправил 28-го сентября 2008 (см.: http://weblogs.asp.net/scottgu/archive/2008/09/28/jquery-and-microsoft.aspx), что Microsoft на самом деле начнет поставлять JQuery с Visual Studio. Проекты MVC будут включать библиотеку по умолчанию. Scott указывает, что это делается с согласием и поддержкой команды JQuery.
См. исходное сообщение для полного изложения.
Я использовал jQuery с Ajax ASP.NET, поскольку они оба делают разные вещи хорошо. У меня никогда не было проблемы с использованием двух вместе. На самом деле я обхожу странную идентификационную путаницу ASP.NET при помощи супер мощных селекторов jQuery. Способностью выбрать классы и подэлементы элементов (в основном CSS) это делает это очень простым в использовании.