Mam rdzeń .net 1.1 aplikacja internetowa, nad którą pracuję z moim zespołem. W niektórych przypadkach musimy debugować aplikację za pomocą IIS Express, aw innych przypadkach zamiast tego musimy użyć WebListener. Ponieważ polecenia WebListner spowodują awarię aplikacji, jeśli jest uruchomiona w IIS Express, chciałbym użyć dyrektyw preprocesora, aby wyłączyć tę funkcję, gdy aplikacja jest uruchomiona w IIS Express. Kod wyglądałby mniej więcej tak:
#if !RUNNING_UNDER_IIS_EXPRESS
.UseWebListener(options =>
{
options.ListenerSettings.Authentication.Schemes = AuthenticationSchemes.Negotiate | AuthenticationSchemes.NTLM;
options.ListenerSettings.Authentication.AllowAnonymous = false;
})
#endif
Czy ktoś może mi powiedzieć, jak mogę to skonfigurować lub zasugerować lepszy sposób na zrobienie wszystkiego?
Odpowiedzi:
2 dla odpowiedzi № 1Problem z twoim pytaniem polega na tym, że dyrektywa preprocesora jest używana i oceniana w czasie kompilacji, a nie w czasie wykonywania. Więc jeśli chcesz „łatwego” przełącznika, musisz zdefiniować go w swoim csproj
jako konfiguracja kompilacji. Musisz dodać konfigurację kompilacji do swojego csproj
plik:
<PropertyGroup Condition=""$(Configuration)|$(Platform)"=="WebListener|AnyCPU"">
<DefineConstants>DEBUG</DefineConstants>
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
</PropertyGroup>
<PropertyGroup Condition=""$(Configuration)|$(Platform)"=="IISExpress|AnyCPU"">
<DefineConstants>DEBUG</DefineConstants>
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
</PropertyGroup>
I musisz dodać informacje, które konfiguracje kompilacji są dostępne:
<PropertyGroup>
<TargetFramework>netcoreapp2.0</TargetFramework>
<Configurations>Debug;Release;WebListener;IISExpress</Configurations>
</PropertyGroup>
dzięki czemu możesz użyć swojego kodu jako przykładu
#if WEBLISTENER
.UseWebListener(options =>
{
options.ListenerSettings.Authentication.Schemes = AuthenticationSchemes.Negotiate | AuthenticationSchemes.NTLM;
options.ListenerSettings.Authentication.AllowAnonymous = false;
})
#endif
#if IISEXPRESS
/* ... */
#endif
ALE: W tym rozwiązaniu musisz zmienić zarówno ustawienia uruchamiania ORAZ ustawienia kompilacji, aby przełączać się między konfiguracjami:
Aby uzyskać więcej informacji, możesz przejrzeć te zasoby:
- Tworzenie niestandardowych konfiguracji kompilacji dla formatu projektu .NET Core
- Jak korzystać z niestandardowych dyrektyw preprocesora w .Net Core