Error: The OwinStartup attribute discovered in assembly

Khi gặp lỗi sau:

The OwinStartup attribute discovered in assembly ‘eNoteBookApp’ referencing startup type ‘eNoteBookApp.Startup’ conflicts with the attribute in assembly ‘eHandbook’ referencing startup type ‘eHandbook.Startup’ because they have the same FriendlyName ”. Remove or rename one of the attributes, or reference the desired type directly.
To disable OWIN startup discovery, add the appSetting owin:AutomaticAppStartup with a value of “false” in your web.config.
To specify the OWIN startup Assembly, Class, or Method, add the appSetting owin:AppStartup with the fully qualified startup class or configuration method name in your web.config

Hãy xử lý bằng cách:

Mở web.config và bổ sung key sau vào appSettings

<appSettings>
<add key=“owin:AutomaticAppStartup” value=“false”/>
</appSettings>

Database index là gì?

Database index (chỉ mục) là gì?

  • Chỉ mục cho phép chương trình tìm dữ liệu trong bảng mà không cần quét toàn bộ bảng.
  • Chỉ mục được dùng để tìm kiếm dữ liệu, con trỏ chỉ mục được sử dụng để định vị (chỉ ra) hàng có chứa giá trị cần tìm kiếm.
  • Chỉ mục xây dung hợp lý có thể cải thiện hiệu suất cơ sở dữ liệu đáng kể.

Chỉ mục có 2 loại: Chỉ mục vật lý và chỉ mục logic

  • Mỗi bảng chỉ có một chỉ mục vật lý và có thể có nhiều hơn 1 chỉ mục logic
  • Chỉ mục vật lý các dòng dữ liệu sắp xếp theo thứ tự vật lý lưu trữ trên đĩa
  • Chỉ mục logic lưu bảng chỉ mục và địa chỉ của dữ liệu được lưu trữ, mỗi khi tìm thấy dữ liệu cần tìm hệ quản trị  csdl truy cập đến địa chỉ được đánh số để lấy dữ liệu mà không cần phải duyệt qua tất cả các bản ghi

Cách tạo chỉ mục

CREATE [UNIQUE] [CLUSTERED|NONCLUSTERED]
INDEX index_name
ON table_name (column_name[, column_name]…)
[WITH
[PAD_INDEX]
[[,]FILLFACTOR=x]
[[,]DROP_EXISTING]
]

Ví dụ

– – Clustered index

CREATE CLUSTERED INDEX CLINDX_titleid ON Roysched (title_id)

– – Noncluster index

CREATE NONCLUSTERED INDEX NCLINDX_ordnum ON sales (ord_num)

Tham số FILLFACTOR là khoảng trống để dành để chèn dữ liệu trong trường hợp sử dung Clustered index để tránh trường hợp khi trang dữ liệu đầy phải tách trang để bổ sung không gian trống. Số fillfactor 100% là sử dung full, không để dành phần trống trong trang dữ liệu.

Mẹo không tải lại các email đã tải xuống outlook

Mỗi khi cài lại máy, những ai dùng outlook chắc rõ quen thuộc việc cấu hình lại outlook để sử dụng các tài khoản web mail trước đây, chẳng hạn như gmail, hoặc exchange server.

Mẹo hay để mọi người thiết lập cho cho webmail để outlook không cần phải tải lại các email đã tải xuống.

  • Đối với gmail, thiết lập như sau:
  1. Logon to the web based version of Gmail here.
  2. Click the Gear icon in the top right corner and choose Mail settings.
  3. Select the “Forwarding and POP/IMAP” tab.
  4. Set the option: Enable POP for mail that arrives from now on.
  5. Press: Save Changes
  • Đối với các email khác không có thiết lập như gmail
  1. Với các loại email không có những thiết lập như trên, bạn có thể tạo ra một thư mục mới và di chuyển (Move) toàn bộ các email trong thư mục INBOX qua thư mục mới này.

Thật đơn giản nhưng nếu không biết, người dùng phải ngồi xóa các email tải 2 lần trong outlook thì thật là vất vã.

 

Hope this help.

CLR-Stored Procedures

CLR stored procedures là gì?

CLR stored procedures là stored procedure được tạo bởi managed code (C#, VB.NET, …)

Khi nào sử dụng CLR stored procedures?

Khi stored procedure không viết được với T-SQL

Cách tạo clr stored procedures?

Các bước dưới đây hướng dẫn cách xây dựng CLR – Stored Procedured

1. Tạo Database project trong C# và viết mã như sau

using System;
using System.Data;
using System.Data.SqlClient;
using System.Data.SqlTypes;
using Microsoft.SqlServer.Server;

public partial class StoredProcedures
{
[Microsoft.SqlServer.Server.SqlProcedure]
public static void SqlStoredProcedure1 ()
{
SqlPipe pipe = SqlContext.Pipe;
pipe.Send(“Hello world”);
}
}

2. Viết mã trong SQL Server

clrSP

Contract Type is Not Attributed with ServiceContractAttribute

Contract Type is Not Attributed with ServiceContractAttribute

 

ServiceHost host = new ServiceHost(typeof(Inventory.InventoryService));
host.AddServiceEndpoint(typeof(Inventory.InventoryService), new NetTcpBinding(),
    "net.tcp://localhost:9000/GetInventory");
host.Open();

If your ServiceContract attribute is on the Interface not the concrete class, try the following:

ServiceHost host = new ServiceHost(typeof(Inventory.InventoryService));
host.AddServiceEndpoint(typeof(Inventory.IInventoryService), new NetTcpBinding(),
    "net.tcp://localhost:9000/GetInventory");
host.Open();

DeSerialize Json data – firebase

Mã nguồn dưới đây hướng dẫn cách Deserialize Json data đọc từ firebase

Tạo lớp Firebaseroot và các thuộc tính như dưới đây

public class Todo
{
public string name;
public int priority;
}

Khai báo FirebaseConfig

IFirebaseConfig config = new FirebaseConfig
{
AuthSecret = “your-secret-key”,
BasePath = “your-firebase-url/”
};

Mã nguồn để đọc dữ liệu từ firebase và deserialize

IFirebaseClient client = new FirebaseClient(config);
FirebaseResponse response = client.Get(“todo”);//Key to read from Firebase

Dictionary<string, Todo> entryDict = JsonConvert.DeserializeObject<Dictionary<string, Todo>>(response.Body);

List<Todo> entries = entryDict.Select(x => x.Value).ToList();

foreach (var item in entries)
{
this.listBox1.Items.Add(item.name); //Add item into ListBox1
}