Sayfalar

21 Ekim 2019 Pazartesi

MVC LOADING TOO SLOW ISSUE


İlgili Application > Advanced Settings >
Satart mode = always Running
Proccesor Afility Enabled = True

9 Ekim 2019 Çarşamba

MVC Decimal symbols comes with "." (dot)


Float yada money değişkenler bazen 17.95 şekilden gelirken biz bunu 17,95 olarak kullanıcıda görünmesini istersek yani  kullanıcının yerel ayarlarına göre gösterilsin istenirse:

IIS Manager >  İlgili Site> .NET Globaliztion> Culter> Seçiniz > Enelable Client Based Culter> True 

8 Ekim 2019 Salı

Mvc Error: The entity type ApplicationUser is not part of the model for the current context.


Db First ile Asp Identity impementasyonu yapıldıysa Web Config Dosyasında iki adet connection string dosyası olmalıdır. İlki EF Ado.Net ile Sql'den Tabloların çekilmesine yarayan string ikincisi ise Microsoft.AspNet.Identity'nin haberleşecği connection string'dir.

Web Congif Dosyasının görüntüsü şöyle olmalıdır.



<connectionStrings>
  <!-- For Identtiy   -->
  <add name="ExpenditureIdentity" 
       connectionString="data source=.\sqlExpress;initial catalog=Expenditure;
       user id=sa;password=*****; Connect Timeout=60;" 
       providerName="System.Data.SqlClient" />
 
 
  <!-- For DB First Entity Framework   -->  
  <add name="ExpenditureEntities" 
       connectionString="metadata=res://*/Models.EF.Expenditures.csdl|res://*/Models.EF.Expenditures.ssdl|res://*/Models.EF.Expenditures.msl;
       provider=System.Data.SqlClient;
       provider connection string=&quot;
       data source=.\sqlExpress;
       initial catalog=Expenditure;
       user id=sa;password=*****;
       MultipleActiveResultSets=True;
       App=EntityFramework&quot;"
       providerName="System.Data.EntityClient" />
  
</connectionStrings>


MVC Account Identity DataBase Script

USE [master]
GO
/****** Object:  Database [TESTDB]    Script Date: 8.10.2019 23:30:05 ******/
CREATE DATABASE [TESTDB]
 CONTAINMENT = NONE
 ON  PRIMARY
( NAME = N'TESTDB', FILENAME = N'C:\Program Files\Microsoft SQL Server\MSSQL14.SQLEXPRESS\MSSQL\DATA\TESTDB.mdf' , SIZE = 8192KB , MAXSIZE = UNLIMITED, FILEGROWTH = 65536KB )
 LOG ON
( NAME = N'TESTDB_log', FILENAME = N'C:\Program Files\Microsoft SQL Server\MSSQL14.SQLEXPRESS\MSSQL\DATA\TESTDB_log.ldf' , SIZE = 8192KB , MAXSIZE = 2048GB , FILEGROWTH = 65536KB )
GO
ALTER DATABASE [TESTDB] SET COMPATIBILITY_LEVEL = 140
GO
IF (1 = FULLTEXTSERVICEPROPERTY('IsFullTextInstalled'))
begin
EXEC [TESTDB].[dbo].[sp_fulltext_database] @action = 'enable'
end
GO
ALTER DATABASE [TESTDB] SET ANSI_NULL_DEFAULT OFF
GO
ALTER DATABASE [TESTDB] SET ANSI_NULLS OFF
GO
ALTER DATABASE [TESTDB] SET ANSI_PADDING OFF
GO
ALTER DATABASE [TESTDB] SET ANSI_WARNINGS OFF
GO
ALTER DATABASE [TESTDB] SET ARITHABORT OFF
GO
ALTER DATABASE [TESTDB] SET AUTO_CLOSE ON
GO
ALTER DATABASE [TESTDB] SET AUTO_SHRINK OFF
GO
ALTER DATABASE [TESTDB] SET AUTO_UPDATE_STATISTICS ON
GO
ALTER DATABASE [TESTDB] SET CURSOR_CLOSE_ON_COMMIT OFF
GO
ALTER DATABASE [TESTDB] SET CURSOR_DEFAULT  GLOBAL
GO
ALTER DATABASE [TESTDB] SET CONCAT_NULL_YIELDS_NULL OFF
GO
ALTER DATABASE [TESTDB] SET NUMERIC_ROUNDABORT OFF
GO
ALTER DATABASE [TESTDB] SET QUOTED_IDENTIFIER OFF
GO
ALTER DATABASE [TESTDB] SET RECURSIVE_TRIGGERS OFF
GO
ALTER DATABASE [TESTDB] SET  ENABLE_BROKER
GO
ALTER DATABASE [TESTDB] SET AUTO_UPDATE_STATISTICS_ASYNC OFF
GO
ALTER DATABASE [TESTDB] SET DATE_CORRELATION_OPTIMIZATION OFF
GO
ALTER DATABASE [TESTDB] SET TRUSTWORTHY OFF
GO
ALTER DATABASE [TESTDB] SET ALLOW_SNAPSHOT_ISOLATION OFF
GO
ALTER DATABASE [TESTDB] SET PARAMETERIZATION SIMPLE
GO
ALTER DATABASE [TESTDB] SET READ_COMMITTED_SNAPSHOT OFF
GO
ALTER DATABASE [TESTDB] SET HONOR_BROKER_PRIORITY OFF
GO
ALTER DATABASE [TESTDB] SET RECOVERY SIMPLE
GO
ALTER DATABASE [TESTDB] SET  MULTI_USER
GO
ALTER DATABASE [TESTDB] SET PAGE_VERIFY CHECKSUM 
GO
ALTER DATABASE [TESTDB] SET DB_CHAINING OFF
GO
ALTER DATABASE [TESTDB] SET FILESTREAM( NON_TRANSACTED_ACCESS = OFF )
GO
ALTER DATABASE [TESTDB] SET TARGET_RECOVERY_TIME = 60 SECONDS
GO
ALTER DATABASE [TESTDB] SET DELAYED_DURABILITY = DISABLED
GO
ALTER DATABASE [TESTDB] SET QUERY_STORE = OFF
GO
USE [TESTDB]
GO
ALTER DATABASE SCOPED CONFIGURATION SET IDENTITY_CACHE = ON;
GO
ALTER DATABASE SCOPED CONFIGURATION SET LEGACY_CARDINALITY_ESTIMATION = OFF;
GO
ALTER DATABASE SCOPED CONFIGURATION FOR SECONDARY SET LEGACY_CARDINALITY_ESTIMATION = PRIMARY;
GO
ALTER DATABASE SCOPED CONFIGURATION SET MAXDOP = 0;
GO
ALTER DATABASE SCOPED CONFIGURATION FOR SECONDARY SET MAXDOP = PRIMARY;
GO
ALTER DATABASE SCOPED CONFIGURATION SET PARAMETER_SNIFFING = ON;
GO
ALTER DATABASE SCOPED CONFIGURATION FOR SECONDARY SET PARAMETER_SNIFFING = PRIMARY;
GO
ALTER DATABASE SCOPED CONFIGURATION SET QUERY_OPTIMIZER_HOTFIXES = OFF;
GO
ALTER DATABASE SCOPED CONFIGURATION FOR SECONDARY SET QUERY_OPTIMIZER_HOTFIXES = PRIMARY;
GO
USE [TESTDB]
GO
/****** Object:  Table [dbo].[__MigrationHistory]    Script Date: 8.10.2019 23:30:05 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[__MigrationHistory](
[MigrationId] [nvarchar](150) NOT NULL,
[ContextKey] [nvarchar](300) NOT NULL,
[Model] [varbinary](max) NOT NULL,
[ProductVersion] [nvarchar](32) NOT NULL,
 CONSTRAINT [PK_dbo.__MigrationHistory] PRIMARY KEY CLUSTERED
(
[MigrationId] ASC,
[ContextKey] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
GO
/****** Object:  Table [dbo].[AspNetRoles]    Script Date: 8.10.2019 23:30:06 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[AspNetRoles](
[Id] [nvarchar](128) NOT NULL,
[Name] [nvarchar](256) NOT NULL,
 CONSTRAINT [PK_dbo.AspNetRoles] PRIMARY KEY CLUSTERED
(
[Id] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO
/****** Object:  Table [dbo].[AspNetUserClaims]    Script Date: 8.10.2019 23:30:06 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[AspNetUserClaims](
[Id] [int] IDENTITY(1,1) NOT NULL,
[UserId] [nvarchar](128) NOT NULL,
[ClaimType] [nvarchar](max) NULL,
[ClaimValue] [nvarchar](max) NULL,
 CONSTRAINT [PK_dbo.AspNetUserClaims] PRIMARY KEY CLUSTERED
(
[Id] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
GO
/****** Object:  Table [dbo].[AspNetUserLogins]    Script Date: 8.10.2019 23:30:06 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[AspNetUserLogins](
[LoginProvider] [nvarchar](128) NOT NULL,
[ProviderKey] [nvarchar](128) NOT NULL,
[UserId] [nvarchar](128) NOT NULL,
 CONSTRAINT [PK_dbo.AspNetUserLogins] PRIMARY KEY CLUSTERED
(
[LoginProvider] ASC,
[ProviderKey] ASC,
[UserId] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO
/****** Object:  Table [dbo].[AspNetUserRoles]    Script Date: 8.10.2019 23:30:06 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[AspNetUserRoles](
[UserId] [nvarchar](128) NOT NULL,
[RoleId] [nvarchar](128) NOT NULL,
 CONSTRAINT [PK_dbo.AspNetUserRoles] PRIMARY KEY CLUSTERED
(
[UserId] ASC,
[RoleId] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO
/****** Object:  Table [dbo].[AspNetUsers]    Script Date: 8.10.2019 23:30:06 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[AspNetUsers](
[Id] [nvarchar](128) NOT NULL,
[Email] [nvarchar](256) NULL,
[EmailConfirmed] [bit] NOT NULL,
[PasswordHash] [nvarchar](max) NULL,
[SecurityStamp] [nvarchar](max) NULL,
[PhoneNumber] [nvarchar](max) NULL,
[PhoneNumberConfirmed] [bit] NOT NULL,
[TwoFactorEnabled] [bit] NOT NULL,
[LockoutEndDateUtc] [datetime] NULL,
[LockoutEnabled] [bit] NOT NULL,
[AccessFailedCount] [int] NOT NULL,
[UserName] [nvarchar](256) NOT NULL,
 CONSTRAINT [PK_dbo.AspNetUsers] PRIMARY KEY CLUSTERED
(
[Id] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
GO
SET ANSI_PADDING ON
GO
/****** Object:  Index [RoleNameIndex]    Script Date: 8.10.2019 23:30:06 ******/
CREATE UNIQUE NONCLUSTERED INDEX [RoleNameIndex] ON [dbo].[AspNetRoles]
(
[Name] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
GO
SET ANSI_PADDING ON
GO
/****** Object:  Index [IX_UserId]    Script Date: 8.10.2019 23:30:06 ******/
CREATE NONCLUSTERED INDEX [IX_UserId] ON [dbo].[AspNetUserClaims]
(
[UserId] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
GO
SET ANSI_PADDING ON
GO
/****** Object:  Index [IX_UserId]    Script Date: 8.10.2019 23:30:06 ******/
CREATE NONCLUSTERED INDEX [IX_UserId] ON [dbo].[AspNetUserLogins]
(
[UserId] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
GO
SET ANSI_PADDING ON
GO
/****** Object:  Index [IX_RoleId]    Script Date: 8.10.2019 23:30:06 ******/
CREATE NONCLUSTERED INDEX [IX_RoleId] ON [dbo].[AspNetUserRoles]
(
[RoleId] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
GO
SET ANSI_PADDING ON
GO
/****** Object:  Index [IX_UserId]    Script Date: 8.10.2019 23:30:06 ******/
CREATE NONCLUSTERED INDEX [IX_UserId] ON [dbo].[AspNetUserRoles]
(
[UserId] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
GO
SET ANSI_PADDING ON
GO
/****** Object:  Index [UserNameIndex]    Script Date: 8.10.2019 23:30:06 ******/
CREATE UNIQUE NONCLUSTERED INDEX [UserNameIndex] ON [dbo].[AspNetUsers]
(
[UserName] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
GO
ALTER TABLE [dbo].[AspNetUserClaims]  WITH CHECK ADD  CONSTRAINT [FK_dbo.AspNetUserClaims_dbo.AspNetUsers_UserId] FOREIGN KEY([UserId])
REFERENCES [dbo].[AspNetUsers] ([Id])
ON DELETE CASCADE
GO
ALTER TABLE [dbo].[AspNetUserClaims] CHECK CONSTRAINT [FK_dbo.AspNetUserClaims_dbo.AspNetUsers_UserId]
GO
ALTER TABLE [dbo].[AspNetUserLogins]  WITH CHECK ADD  CONSTRAINT [FK_dbo.AspNetUserLogins_dbo.AspNetUsers_UserId] FOREIGN KEY([UserId])
REFERENCES [dbo].[AspNetUsers] ([Id])
ON DELETE CASCADE
GO
ALTER TABLE [dbo].[AspNetUserLogins] CHECK CONSTRAINT [FK_dbo.AspNetUserLogins_dbo.AspNetUsers_UserId]
GO
ALTER TABLE [dbo].[AspNetUserRoles]  WITH CHECK ADD  CONSTRAINT [FK_dbo.AspNetUserRoles_dbo.AspNetRoles_RoleId] FOREIGN KEY([RoleId])
REFERENCES [dbo].[AspNetRoles] ([Id])
ON DELETE CASCADE
GO
ALTER TABLE [dbo].[AspNetUserRoles] CHECK CONSTRAINT [FK_dbo.AspNetUserRoles_dbo.AspNetRoles_RoleId]
GO
ALTER TABLE [dbo].[AspNetUserRoles]  WITH CHECK ADD  CONSTRAINT [FK_dbo.AspNetUserRoles_dbo.AspNetUsers_UserId] FOREIGN KEY([UserId])
REFERENCES [dbo].[AspNetUsers] ([Id])
ON DELETE CASCADE
GO
ALTER TABLE [dbo].[AspNetUserRoles] CHECK CONSTRAINT [FK_dbo.AspNetUserRoles_dbo.AspNetUsers_UserId]
GO
USE [master]
GO
ALTER DATABASE [TESTDB] SET  READ_WRITE
GO

3 Ekim 2019 Perşembe

Different Ways of Binding DropDownList in Asp.Net MVC

Different Ways of Binding DropDownList in Asp.Net MVC

07-06-2017
Tagged as: Asp.Net MVC Posted By 
Asp.Net MVC has 2 HTML helper methods to bind DropDownList in input views. This little article will help you understand different ways of dynamically binding DropDownList control by fetching data from database. For simple understanding, let’s assume we have a Department table and want to bind the list of departments in a DropDownList control fetched using Entity Framework.
Assume, you have a view to edit an Employee details which has a DropDownList to change the employee’s department. Let’s see how to bind the DropDownList with Department table data for this edit view.
Using @Html.DropDownListFor()
When we use strongly typed views, we can use the @Html.DropDownListFor() method. This helper method will need the list of departments to first populate the dropdown and then set the employee’s department id passed in model object as selected item.
The below edit action method uses ViewBag.DepartmentListItems to pass the list of departments to view.
Action

public ActionResult edit(int id)
{
    Employee emp = db.Employees.Where(e => e.EmployeeId == id).FirstOrDefault();
    ViewBag.DepartmentListItems = db.Departments.Distinct().Select(i => new SelectListItem() { Text = i.DepartmentName, Value = i.DepartmentId.ToString() }).ToList();
    return View(emp);
}

The list items in view bag will be used to bind the dropddownlist and html helper will set the DepartmentId based on the Employee model passed to the view. View Code below.
View

@Html.DropDownListFor(model => model.DepartmentId, ViewBag.DepartmentListItems as IEnumerable<SelectListItem>,"Select")

Note – It is a good practice to use ViewModels to pass the Department list instead of using ViewBag for binding DropDownList. I have just used ViewBag for easy demonstration.
There are many other overloaded methods available for this helper method for adding HTML properties but all those methods too works similar to the above method.
Using @Html.DropDownList()
This is another HTML helper method to bind the DropDownList in Asp.Net MVC view. Though there are around 8 overloaded methods, the below 3 methods are the primarily used most of the time and other methods available are to just pass the HTML properties in different ways.
  1. Bind using IEnumerable<SelectListItem>
This method works similar to first approach (DropDownListFor) but only difference is we are explicitly naming the DropDownList to match the Model property name (Employee.DepartmentId).
Action

public ActionResult edit(int id)
{
    Employee emp = db.Employees.Where(e => e.EmployeeId == id).FirstOrDefault();
    ViewBag.DepartmentListItems = db.Departments.Distinct().Select(i => new SelectListItem() { Text = i.DepartmentName, Value = i.DepartmentId.ToString() }).ToList();
    return View(emp);
}
 

View

@Html.DropDownList("DepartmentId", ViewBag.DepartmentListItems as IEnumerable<SelectListItem>, "Select")

In the above method, the DropDownList selected item will be automatically set to the Employee object’s DepartmentId value though we did not set the selected item explicitly in the HTML helper.
An alternate way to set the selected item is to set the Selected property to true when adding the SelectListItem object into ViewBag.

new SelectListItem() { Text = i.DepartmentName, Value = i.DepartmentId.ToString(), Selected = true }


  1. Bind using List<T>
The above methods passed the list items as a List<SelectListItem> collection which the DropDownList HTML helpers used directly to bind the control. At times, we may also need to bind DropDownList using List<T> object, where T is our business entity. In our case, it is List<Department> object.
We can use the same overload method and use SelectList object for this.
Action

public ActionResult edit(int id)
{
    Employee emp = db.Employees.Where(e => e.EmployeeId == id).FirstOrDefault();
    ViewBag.DepartmentListItems = db.Departments.Distinct().Select(i => new SelectListItem() { Text = i.DepartmentName, Value = i.DepartmentId.ToString() }).ToList();
    return View(emp);
}

View

@Html.DropDownList("DepartmentId", new SelectList(ViewBag.DepartmentList, "DepartmentId","DepartmentName", Model.DepartmentId), "Select")

In the above method, we have set the selected item explicitly in the SelectList object ( SelectList(ViewBag.DepartmentList, "DepartmentId","DepartmentName", Model.DepartmentId)). As indicated in previous approach (i), the above code will also automatically set the selected item even if we don’t specify the selected value explicitly.

  1. Bind Using ViewBag.DropDownListId
This is another simple approach where we can use the ViewBag to supply the SelectList object from controller Action method. MVC will automatically bind the DropDownList with the ViewBag property when the name of the DropDownList matches with ViewBag property name. In our case, it is ViewBag.DepartmentId
Action

public ActionResult edit(int id)
{
    Employee emp = db.Employees.Where(e => e.EmployeeId == id).FirstOrDefault();
    if (emp != null)
        ViewBag.DepartmentId = new SelectList(db.Departments.ToList(), "DepartmentId", "DepartmentName", emp.DepartmentId);
    return View(emp);
}
 
View

@Html.DropDownList("DepartmentId","Select")

In the above method, MVC will automatically bind the SelectList object from the ViewBag property “DepartmentId“ to the DropDownList control.
Happy Coding!!

2 Ekim 2019 Çarşamba

MSSQL Server Connection Check with .UDL


Server bağlantı ayarlarını kontrol etmek ve web config vb dosyalarda kullanmak için güzel bir yöntem

  1. Create a new blank file and name it test.udl.
  2. Double click on it, and a "Data Link Properties" dialog should appear.
  3. On "Providers" tab, select "Microsoft OLE DB Provider for SQL Server" or "SQL Native Client"
  4. On "Connections" tab, try various settings and use the "Test Connection" button to test them. Click "Ok" when it works.
  5. Open the test.udl file in Notepad and copy the line that starts with "Provider=" into your Web.config "ConnectionString" value, BUT delete the little part that says "Provider=SQLNCLI.1;"

Wep Api Installation on Server Side


Visual Studio >>>

1-     Web api içerisinde Install-Package Microsoft.AspNet.WebApi.Cors nuget packets yükle

2-      App_Start\WebApiConfig.cs" file > Add " config.EnableCors();"   before config.MapHttpAttributeRoutes();

3- Eğer proje, Entity Framework ile oluşturulmuş ve özellikle DB Server uzak bir sunucuda bulunuyor ise WebConfig dosyasında connection string mutlaka şöyle olmalı:

    <add name="SunExpressEntities" connectionString="metadata=res://*/Orm.SunExEntities.csdl|res://*/Orm.SunExEntities.ssdl|res://*/Orm.SunExEntities.msl;

   provider=System.Data.SqlClient;
   provider connection string=&quot;
   data source=******;
   User ID= *****; 
   Password=******;
   initial catalog=******;
   integrated security=False;
   persist security info=True;
   MultipleActiveResultSets=True;
   App=EntityFramework&quot;" 
   providerName="System.Data.EntityClient" /> 

4-     Publish et.


Server >>>

1-     Kopyalanan klasörün Yazma ve Okuma izinlerini kontrol et.

2-     Run> inetmgr >IIS 

IIS >>>
İki seçenek mevcut. Ben ikincisini kullandım.

1-      DefaultWebSite> RightClick >Add Application > Finish
    Bu kurulumda Bindings seçeneğini bulamadım. Sadece local host çalışmakta.

2-     Site> RightClick >Add Site> Fills sections..>
Port: Kendiniz verin(*)
IP: Dış IP’yi seçin yada local için “AllAssinged bırakın(**)> Finish 

3-  AnaPanel>  İlgiliSiteİsmi> AdvancedSettings>
           ApplicationPool=DefaultAppPool yada 4.5 Classic






Hatalar ve Çözümleri>>>>

Hata: "ExceptionMessage":"The underlying provider failed on Open

Çözüm: Web config'de intagred Security:False dediğimiz için sitenin bağlı olduğu AppPool pipeline'nı Classic olarak ayarlamak gerekir. Şu ayarı yapın:
 İlgiliSiteİsmi> AdvandecSettings>ApplicationPool=DefaultAppPool yada 4.5 Classic

Uzak urlden bağlatı Hatası:
[Fiddler] The connection to '164.68.98.211' failed.
Error: TimedOut (0x274c).


Çözüm: Port numarası için Firewalldan Inbound yazarak ilgili porta izin verilmeli




* Port numarası 80 değilse Windows Firewall Advanced > Inbound yazarak ilgili porta izin verilmeli
** Default bırakıldığında local host olarak ayarlanır. Daha sonra dış IP’yide bağlamak i.in Bindings> Add



MVC LOADING TOO SLOW ISSUE