Plesk kurulu sunucuda .net core internal server error lock violation hatası

IIS te .net core kullanan siteleriniz aşağıdaki hatayı veriyor olabilir.

HTTP Error 500.19 – Internal Server Error
The requested page cannot be accessed because the related configuration data for the page is invalid.
Detailed Error Information
Module IIS Web Core
Notification BeginRequest
Handler Not yet determined
Error Code 0x80070021
Config Error Lock violation
Config File \?\C:\Inetpub\vhosts\ayhanarda.com\web.config

Öncelikle .net core çalışıp çalışmadığını ya da kurulu olup olmadığını test edelim.

C:\Users\Administrator>dotnet –version
2.1.401

C:\Users\Administrator>dotnet –info
.NET Core SDK (reflecting any global.json):
Version: 2.1.401
Commit: 91b1c13032

Runtime Environment:
OS Name: Windows
OS Version: 10.0.14393
OS Platform: Windows
RID: win10-x64
Base Path: C:\Program Files\dotnet\sdk\2.1.401\

Host (useful for support):
Version: 2.2.6
Commit: 7dac9b1b51

.NET Core SDKs installed:
2.1.3 [C:\Program Files\dotnet\sdk]
2.1.4 [C:\Program Files\dotnet\sdk]
2.1.401 [C:\Program Files\dotnet\sdk]

.NET Core runtimes installed:
Microsoft.AspNetCore.All 2.1.3 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.All]
Microsoft.AspNetCore.All 2.2.5 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.All]
Microsoft.AspNetCore.All 2.2.6 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.All]
Microsoft.AspNetCore.App 2.1.3 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App]
Microsoft.AspNetCore.App 2.2.5 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App]
Microsoft.AspNetCore.App 2.2.6 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App]
Microsoft.NETCore.App 1.0.4 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
Microsoft.NETCore.App 1.0.9 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
Microsoft.NETCore.App 1.1.1 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
Microsoft.NETCore.App 1.1.6 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
Microsoft.NETCore.App 2.0.4 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
Microsoft.NETCore.App 2.0.5 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
Microsoft.NETCore.App 2.0.6 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
Microsoft.NETCore.App 2.1.3 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
Microsoft.NETCore.App 2.2.5 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
Microsoft.NETCore.App 2.2.6 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]

Görünen o ki kurulum ve çalışmasında bir sorun yok , hatta proje oluşturup oluşturamadığımıza cmd konsolu üzerinden bakabiliriz. Bir konsol projesi oluşturalım ve publish edelim , gereçek ortamda yayınlamasak ta işlevinin çalıştığını anlayabiliriz.

dotnet new console -o ayhanarda
cd ayhanarda
dotnet publish

Eğer buraya kadar bir sorun yoksa .net in çalıştığına emin olabilirsiniz. Hatada ne diyordu , Lock Violation , yani bir şeyler .net core un çalışmasını engelliyor , kilitliyor.

Bu hatayı gidermek için Plesk panelinizde Araçlar/ayarlar bölümünde Güvenlik bölümüne gelip buradan güvenlik ilkesi adımı ile aşağıdaki bölümün tikini kaldırınız , siteniz çalışacaktır.

Özel işleyiciler ilkesi
Müşterilerin web.config dosyasıyla sunucu seviyesinde tanımlanan IIS işleyicilerini bypass etmesini önlemek için bu seçeneği etkinleştirin.
(UN TICK)
web.config ile işleyicileri geçersiz kılma yeteneğini engelleyin

for english:

Log into Plesk
Untick Prohibit the ability to override handlers via web.config in Plesk > Tools & Settings > Security

Ayhan ARDA

An ASP.NET setting has been detected that does not apply in Integrated managed pipeline mode. Hatası

An ASP.NET setting has been detected that does not apply in Integrated managed pipeline mode. hatası için web.config dosyasına aşağıdaki kodları ekleyiniz. Sitenin application pool unu integrated mode a alınız. (False etrafındaki tırnaklar bozulmakta , web.config dosyanıza ekledikten sonra tırnakları silip kendiniz tırnak yapınız.)

<system.webServer>
<validation validateIntegratedModeConfiguration=”false” />
</system.webServer>

Global.asax routing problemi

Merhaba;

Localinizde çalışan global.asax dosyanız , sunucu üzerinde çalışmayabilir. Bunun çözümü için aşağıdaki yöntemi uygulayabilirsiniz.

IIS i açıyoruz.

Web sitesinin özelliklerine giriyoruz.

Home Directory bölümünden Configuration butonuna tıklıyoruz.

Mapping tabından .aspx i bulup çift tıklıyoruz.

Executable alanındaki değeri kopyalıyoruz.

Sonra yeni bir isapi extension eklemek için Add butonuna tıklıyoruz.

Executable alanına az önce kopyaladığımız yolu yapıştırıyoruz.

Extension alanına .html yazıyoruz.

En alt kısımda bulunan Check that file exists” kısmındaki işareti kaldırınız.Bu en önemli kısımdır.

Tüm işlem bu kadar. Artık genellikle seo için kullanmak isteyebileceğiniz .html routing işlemleriniz çalışacaktır.

Örnek global.asax;

<%@ Application Language=”C#” %>
<%@ Import Namespace=”System.Web.Routing” %>

<script runat=”server”>

void Application_Start(object sender, EventArgs e)
{
// Code that runs on application startup
Routingler(RouteTable.Routes);
}

void Routingler(RouteCollection routes)
{
routes.MapPageRoute(“anasayfa”, “index.html”, “~/Default.aspx”);

routes.MapPageRoute(“hakkında”, “Hakkimizda.html”, “~/Hakkimizda.aspx”);

}

void Application_End(object sender, EventArgs e)
{
//  Code that runs on application shutdown

}

void Application_Error(object sender, EventArgs e)
{
// Code that runs when an unhandled error occurs

}

void Session_Start(object sender, EventArgs e)
{
// Code that runs when a new session is started

}

void Session_End(object sender, EventArgs e)
{
// Code that runs when a session ends.
// Note: The Session_End event is raised only when the sessionstate mode
// is set to InProc in the Web.config file. If session mode is set to StateServer
// or SQLServer, the event is not raised.

}

</script>