Sử dụng Firebase với FireSharp

Các bước dưới đây hướng dẫn bạn sử dụng Firebase với FireSharp trong .NET (C#,VB.NET).

Các bước thực hiện:

  • Cài đặt thư viện FireSharp bằng cách mở Package NuGet Manager Console

Install-Package FireSharp

  • Thiết lập cấu hình và khai báo đối tượng FirebaseClient
 IFirebaseConfig config = new FirebaseConfig
  {
     AuthSecret = "your_firebase_secret",
     BasePath = "https://yourfirebase.firebaseio.com/"
  };
IFirebaseClient  client = new FirebaseClient(config);
  •  Thêm dữ liệu vào Firebase với PUSH method
var todo = new Todo
 {
 name = "Execute PUSH",
 priority = 2
 };
 PushResponse response = client.Push("Key", todo);
  • Update firebase data với Set method
 var todo = new Todo
 {
 name = "Execute SET",
 priority = 2
 };
 SetResponse response = client.Set("key", todo);
  • Get data from Firebase
 FirebaseResponse response = await _client.GetAsync("todos/set");
 Todo todo=response.ResultAs<Todo>(); //The response will contain the data being retreived

Detecting Changes with SqlDependency

Giám sát thay đổi của dữ liệu thông qua đối tượng SqlDependency trong .NET (Detecting Changes with SqlDependency)

Đối tượng SqlDependency có thể kết hợp với SqlCommand để giám sát được sự thay đổi của truy vấn so với truy vấn gốc.

Các bước dưới đây hướng dẫn qui trình thực hiện giám sát dữ liệu thay đổi

  1. Khởi tạo một kết nối SqlDependency với máy chủ (CSDL)
  2. Tạo đối tượng SqlConnection và SqlCommand để kết nối với máy chủ và định nghĩa câu truy vấn cần giám sát
  3. Tạo một đối tượng SqlDependency mới và ràng buộc nó với đối tượng SqlCommand
  4. Đăng ký sự kiện cho sự kiện OnChange của đối tượng SqlDependency
  5. Thực hiện câu lệnh bất kỳ (Execute) nào của đối tượng SqlCommand. Bởi vì lệnh này bị ràng buộc với đối tượng thông báo, máy chủ nhận ra rằng nó phải tạo ra một thông báo, và thông tin hàng đợi sẽ trỏ đến hàng đợi phụ thuộc
  6. Kết thúc, dừng giám sát của SqlDependency 

Mã nguồn tham khảo các bước thực hiện

void Initialization()  
{  
    // Create a dependency connection.  
    SqlDependency.Start(connectionString);  
}  
  
void SomeMethod()  
{  
    // Assume connection is an open SqlConnection.  
  
    // Create a new SqlCommand object.  
    using (SqlCommand command=new SqlCommand(  
        "SELECT ShipperID, CompanyName, Phone FROM dbo.Shippers",   
        connection))  
    {  
  
        // Create a dependency and associate it with the SqlCommand.  
        SqlDependency dependency=new SqlDependency(command);  
        // Maintain the refence in a class member.  
  
        // Subscribe to the SqlDependency event.  
        dependency.OnChange+=new  
           OnChangeEventHandler(OnDependencyChange);  
  
        // Execute the command.  
        using (SqlDataReader reader = command.ExecuteReader())  
        {  
            // Process the DataReader.  
        }  
    }  
}  
  
// Handler method  
void OnDependencyChange(object sender,   
   SqlNotificationEventArgs e )  
{  

if (e.Type == SqlNotificationType.Change)
{
NotificationHub nHub = new NotificationHub();
nHub.SendNotifications();
}
  // Handle the event (for example, invalidate this cache entry).  
}  
  
void Termination()  
{  
    // Release the dependency.  
    SqlDependency.Stop(connectionString);  
}

The ‘ObjectContent`1’ type failed to serialize the response body for content type

Lỗi: The ‘ObjectContent`1’ type failed to serialize the response body …

Error>
<Message>An error has occurred.</Message>
<ExceptionMessage>
The ‘ObjectContent`1’ type failed to serialize the response body for content type ‘application/xml; charset=utf-8’.
</ExceptionMessage>
<ExceptionType>System.InvalidOperationException</ExceptionType>
<StackTrace/>
<InnerException>
<Message>An error has occurred.</Message>
<ExceptionMessage>
Type ‘System.Data.Entity.DynamicProxies.Note_F843D42272465FB5DCED8BD44BD094791BE3AEBE38A117FA4DA7420DB2525323’ with data contract name ‘Note_F843D42272465FB5DCED8BD44BD094791BE3AEBE38A117FA4DA7420DB2525323:http://schemas.datacontract.org/2004/07/System.Data.Entity.DynamicProxies&#8217; is not expected. Consider using a DataContractResolver if you are using DataContractSerializer or add any types not known statically to the list of known types – for example, by using the KnownTypeAttribute attribute or by adding them to the list of known types passed to the serializer.
</ExceptionMessage>
<ExceptionType>
System.Runtime.Serialization.SerializationException
</ExceptionType>

Xử lý: Chèn đoạn code này vào file WebApiConfig.cs trong phương thức public static void Register(HttpConfiguration config)

 var json = config.Formatters.JsonFormatter;
json.SerializerSettings.PreserveReferencesHandling = Newtonsoft.Json.PreserveReferencesHandling.Objects;
config.Formatters.Remove(config.Formatters.XmlFormatter);

Hướng dẫn xây dựng Windows Service

Hướng dẫn xây dựng windows services (How to create a windows services)

  • Tạo dự án chọn loại Windows Services

1

  • Đặt tên cho Windows Service

2

  • Click chuột phải trên MyServiceDemo (Design) > Add Installer, VS sẽ add 2 thành phần vào MyServiceDemo như sau

3

  • Thiết lập tài khoản chạy Service bằng cách click vào serviceProcessInstaller1
    • Thiết lập loại tài khoản Account: LocalSystem
    • Click chọn ServiceInstaller1 thiết lập kiểu khởi động và tên services
      • StartType: Automatic
      • Description: My Service Demo
      • DisplayName: My Service Demo
  • Viết code cho 2 sự kiện của service khi khởi động và tắt dịch vụ

protected override void OnStart(string[] args)
{
File.WriteAllText(“c:\\temp\\log.txt”,”Started time:” + DateTime.Today.ToLongTimeString());
}

protected override void OnStop()
{

File.WriteAllText(“c:\\temp\\log.txt”,”Started time:” + DateTime.Today.ToLongTimeString());

}

  • Biên dịch Project
  • Mở Visual Studio Command với quyền là Administrator
  • Chuyển đến thư mục chứa file exe của windows services vừa biên dịch
  • Gõ lệnh
  • Installutil /i tencuaproject.exe

Role based security in ASP.NET MVC5

Bài này hướng dẫn xây dựng xây dựng Role based security trong ASP.NET MVC5 kết hợp ASP.NET Identity có fix lỗi (nếu tham khảo hướng dẫn của các bài viết).

Bài này hoàn thành gồm các chức năng:

  • Register
  • Create a new role 
  • AddUserToRole
  • Edit role
  • Delete role
  • List all roles
  • List all roles was assigned for the user
  • Update role

[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult RoleAddToUser(string UserName, string RoleName)
{
ApplicationUser user = context.Users.Where(u => u.UserName.Equals(UserName, StringComparison.CurrentCultureIgnoreCase)).FirstOrDefault();
//var account = new AccountController();
//account.UserManager.AddToRoleAsync(user.Id, RoleName);
if (user != null) UserManager.AddToRole(user.Id, RoleName);
ViewBag.ResultMessage = “Role created successfully !”;

// prepopulat roles for the view dropdown
var list = context.Roles.OrderBy(r => r.Name).ToList().Select(rr => new SelectListItem { Value = rr.Name.ToString(), Text = rr.Name }).ToList();
ViewBag.Roles = list;

return View(“ManageUserRoles”);
}
public ApplicationUserManager UserManager
{
get { return _userManager ?? HttpContext.GetOwinContext().GetUserManager<ApplicationUserManager>(); }
private set {_userManager = value; }
}
private ApplicationUserManager _userManager;

Link download mã nguồn