» »

ASP, ASP.NET

ASP, ASP.NET

inferno666 ::

Zanima me, če se da iz ASP.NET-a klicati funkcije od navadnega ASP-ja. Oz. se da narediti kakšen wrapper okoli asp-ja, da ga lahko uporabljaš tudi v ASP.netu.

darkolord ::

Na primer? ASP.NET ima vso funkcionalnost klasičnega ASPja...

inferno666 ::

Rad bi iz asp.net klical funkcijo, ki je znotraj classic asp datoteke. Vem da na IIS lahko poganjaš tako asp.net kot klasični asp

Matako ::

Hm, ASP (ne-.net) je samo serverska skriptna tehnologija, ki se sproži ob zahtevi strani (na web serverju). To je recimo že en, dokaj nepraktičen način: zahtevaš ASP stran, sparsaš rezultat.

Praktično je veliko bolje, da tisto ASP funkcijo prepišeš v ASP.NET - po mojem bo zelo malo dela.
/\/\.K.

acookook ::

asp net core 6 aplikacijo sem dokončal. Sedaj jo hočem deployati na isti strežnik, kjer že imam sql server. enostavno ne vem kaj točno moram narediti, saj mi vsak pristop (web package, web deploy, ročno kopiranje na mašino.....)javlja nek error. Dodaten plus je, če bi mi uspel da app dam v Docker in imam https, magari z nekim fake certifikatom. Mogoče še to. V solutionu imam en web project, "core" knjižnico ter database project, kjer slednjega rabim bolj ali manj samo za trackanje sprememb v gitu.
Windows Platform installer je deprecated, web deploy na remote serverju je novejši od 3.6...Domnevam, da so omenjene tehnologije tudi bolj za kake starejše asp .net verzije.
.

AndrejS ::

Imaš na strežniku nameščen .netcore 6 ?

dotnet --version

dotnet --list-runtimes

Zgodovina sprememb…

  • spremenil: AndrejS ()

acookook ::

Ja, 6.0.202.
.

darkolord ::

Kakšen error ti javlja?

Imaš na strežnku nameščen .NET Hosting Bundle?

acookook ::

Ja hosting bundle je nameščen. Javlja mi različne errorje, od tega strežnik splog ne obstaja (katere porte je še potrebno odpreti?, pol za druge metode hoče neke permissione itd. Enostavno ne vem, kje bi lahko našel ne normalen guide za te stvari.
.

acookook ::

Nekaj sem sicer s čaral, da bi mi za test delalo lokalno na dockerju. Dela vse razen pri operacijah, ki zahtevajo povezavo do baze. Spročila exceptionov ne dajo sploh ideje kar bi lahko iskal. Dockerfile ni nič posebnega, ga pa dam vseeno zraven:
#See https://aka.ms/containerfastmode to understand how Visual Studio uses this Dockerfile to build your images for faster debugging.

FROM mcr.microsoft.com/dotnet/aspnet:6.0 AS base
WORKDIR /app
EXPOSE 80
EXPOSE 443

FROM mcr.microsoft.com/dotnet/sdk:6.0 AS build
WORKDIR /src
COPY ["myProject/myProject.csproj", "myProject/"]
COPY ["myProject.Core/myProject.Core.csproj", "myProject.Core/"]
RUN dotnet restore "myProject/myProject.csproj"
COPY . .
WORKDIR "/src/myProject"
RUN dotnet build "myProject.csproj" -c Release -o /app/build

FROM build AS publish
RUN dotnet publish "myProject.csproj" -c Release -o /app/publish /p:UseAppHost=false

FROM base AS final
WORKDIR /app
COPY --from=publish /app/publish .
ENTRYPOINT ["dotnet", "myProject.dll"]
.

acookook ::

K temu docker fileu (linux container) bi dodal še, da mi okoljska spremenljivka ASPNETCORE_ENVIRONMENT zavzame vrednost "Staging" in posledično zagrabi konfiguracijo v appsettings.Staging.json. Dodal sem te vrstice, vendar ENV je še zmeraj "Development".
ARG ASPNETCORE_ENVIRONMENT=Staging
ENV ASPNETCORE_ENVIRONMENT Staging
ENTRYPOINT ["dotnet", "myProject.dll", "--environment=Staging"]
.

acookook ::

Tudi če probam kombinacije spreminjanja lauchsettingsov, ne pali oz. mi crkne, nekaj v povezavi s HTTPSom.
{
  "profiles": {
    "myProject": {
      "commandName": "Project",
      "launchBrowser": true,
      "environmentVariables": {
        "ASPNETCORE_ENVIRONMENT": "Development"
      },
      "dotnetRunMessages": true,
      "applicationUrl": "https://localhost:7181;http://localhost:5020"
    },
    "IIS Express": {
      "commandName": "IISExpress",
      "launchBrowser": true,
      "environmentVariables": {
        "ASPNETCORE_ENVIRONMENT": "Development"
      }
    },
    "Docker": {
      "commandName": "Docker",
      "launchBrowser": true,
      "launchUrl": "{Scheme}://{ServiceHost}:{ServicePort}",
      "publishAllPorts": true,
      "useSSL": true,
      "environmentVariables": {
        "ASPNETCORE_ENVIRONMENT": "Staging"
      } /*System.InvalidOperationException: 'Unable to configure HTTPS endpoint. No server certificate was specified, and the default developer certificate could not be found or is out of date.
To generate a developer certificate run 'dotnet dev-certs https'. To trust the certificate (Windows and macOS only) run 'dotnet dev-certs https --trust'.*/
    },
    "WSL": {
      "commandName": "WSL2",
      "launchBrowser": true,
      "launchUrl": "https://localhost:7181",
      "environmentVariables": {
        "ASPNETCORE_ENVIRONMENT": "Staging",
        "ASPNETCORE_URLS": "https://localhost:7181;http://localhost:5020"
      },
      "distributionName": ""
    }
  },
  "iisSettings": {
    "windowsAuthentication": false,
    "anonymousAuthentication": true,
    "iisExpress": {
      "applicationUrl": "http://localhost:15607",
      "sslPort": 44320
    }
  }
}

Če poženem
dotnet dev-certs https 

Dobim obvestilo "A valid HTTPS certificate is already present." ne glede na to, ali je v direktoriju s csproj datoteko ali sln datoteko.
.

Zgodovina sprememb…

  • spremenil: acookook ()

darkolord ::

Tole in tole si poglej.

acookook ::

Mislim nočem imeti nekaj specifičnega za certe. Rad samo ta app končno deployal. Pač hočem imeti delujočo aplikacijo. ni nevem kaj mu s certi ne paše.

Saj Kestrela sploh nimam
.

Zgodovina sprememb…

  • spremenil: acookook ()

darkolord ::

Kestrel je vgrajen v .NET

Ponavadi app v dockerju laufaš brez SSL-ja, potem imaš pa zunaj load balancer ali web server, ki dela kot proxy, pa morebitne certifikate nastavljaš tam.

acookook ::

mislim že prej nisem uporabljal kestrela. Zdaj pa sem totalno zgubljen. Pač trenutno nočem imeti posla s kestrelom. Program.cs je to in hočem da tako ostane, če ni potrebno. Bom potem že dodal tale kestrel:
using Microsoft.AspNetCore.Authentication.Cookies;
using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.Options;
using Models.Data;
using myProject.Core.Configurations;
using myProject.Core.Logic;
using myProject.Core.Logic.DTO;
using myProject.Core.Logic.ProviderLogic;
using myProject.Core.Repository;

var builder = WebApplication.CreateBuilder(args);

// Add logging to the program.
builder.Host.ConfigureLogging(logging =>
{
    logging.ClearProviders();
    logging.AddConsole();
});

builder.Services.AddRazorPages();

// Register the IOptions object (TI configuration).
builder.Services.AddOptions<TConf>()
    .BindConfiguration("TConf");

// Explicitly register the settings objects by delegating to the IOptions object. (TI configuration).
builder.Services.AddSingleton(resolver => resolver.GetRequiredService<IOptions<TConf>>().Value);

// Initialize context to program.
builder.Services.AddDbContext<myProjectContext>(
    options => options.UseSqlServer(builder.Configuration.GetConnectionString("myProjectDb"))
    );

//Lazy cache.
builder.Services.AddLazyCache();

// Unit Of work and repositories.
builder.Services.AddScoped<IUnitOfWork, UnitOfWork>();
builder.Services.AddScoped<IXYZRepository, XYZRepository>();
// Main logic.
builder.Services.AddScoped<IXYZLogic, XYZLogic>();

// Global cookie settings.
builder.Services.AddAuthentication(CookieAuthenticationDefaults.AuthenticationScheme)
  .AddCookie(options =>
  {
      options.LoginPath = "/Login";
      options.AccessDeniedPath = "/Login";
      options.Cookie.Name = "AuthenticationCookie";
      options.ExpireTimeSpan = TimeSpan.FromDays(30);
      options.SlidingExpiration = true;
      options.Cookie.IsEssential = true;
  });

var app = builder.Build();

// Configure the HTTP request pipeline.
if (!app.Environment.IsDevelopment())
{
    app.UseExceptionHandler("/Error");
    app.UseHsts();
}

app.UseHttpsRedirection();
app.UseStaticFiles();

app.UseCookiePolicy(new CookiePolicyOptions
{
    MinimumSameSitePolicy = SameSiteMode.Strict
});

app.UseRouting();

app.UseAuthentication();
app.UseAuthorization();

app.UseEndpoints(endPoints =>
{
    endPoints.MapRazorPages();
    //Controller routes
});

app.Run();


Mislim, če mi pokažeš kako dodati kestrel in ni zajebano lahko še to dodam. Ampak trenutno bi res rad trenutno deployal tale s čim manj frk, ker morem še povezavo do baze uštimat.
.

Zgodovina sprememb…

  • spremenil: acookook ()

darkolord ::

Kestrel se uporabi avtomatsko (v WebApplication.CreateBuilder(args) se interno pokliče metoda UseKestrel), če appa nimaš hostanega v IIS.

Brez web serverja web app ne more laufat, tako da imaš opcijo ali:
- uporabiš zunanji web server (IIS ali IIS Express na dev mašini)
- uporabiš vgrajeni Kestrel

Premalo informacij je, kako in kam bi rad zadevo sploh deployal. Na server? Kaj tam laufa?

acookook ::

Trenutno si server na katerega bi zadevo deployal, delim z drugimi in laufa še enih par stvari večinoma še starih asp net (4.x.x) aplikacij v IISu. Probal sem publish preko Visual studia pa mi kao ne najde strežnika (čeprav sem do njega ravnokar povezan in so porti odprti). Če probam z nekimi datotekami,kjer je zraven še zip prav tako ne gre (dobim nek error, kjer mi v CMD pljune nek error in konzolo takoj zapre, drugi idej pa več nimam). Malo je bedno ker dosti kaj šarati po Windows virtualki ne smem (če jo že imam zastonj). Zato docker. ta se trenutno nahaja v mapi enega od 3 projetkov celotnega solutiona. vsebina je zgoraj. Dodal bi tudi sql server mi pa ukaz docker-compose up (niti ne vem kam naj ta docker-compose.yml file naj dam) prav tako vrne error.
Docker file in .dockerignore file (v rootu kjer je sln datoteka) sem generiral VS2022. Dalje pa ne vem. Kar bi trenutno rad je samo, da mi sprejme appsettings.Staging.json in ne .Development, za kar moram imeti ASPNETCORE_ENVIRONMENT verjetno nastavljen na "Staging". Po zgoraj opisanih korakih mi to ne uspe.
.

darkolord ::

OK, gremo mogoče en korak nazaj?

dotnet publish -c Release 


Rezultat je v \bin\Release\net7.0\publish

Skopiraj celo vsebino mape na server, odpri cmd.exe posebej, pojdi v to mapo v cmdju, in poženi .exe.

Napiši kakšen error dobiš.

Zgodovina sprememb…

  • spremenilo: darkolord ()

acookook ::

(odpišem kasneje) sicer asp net core 6 app.
.

acookook ::

CSS je broken, podatkov ne dobim iz baze, stran dosegliva na locahostu, me pa avtomatsko preusmeri na https (5001), tudi če najprej specificiram http port (5000)

mam očutek, da mi niti javascripta ne šmirgla.
.

Zgodovina sprememb…

  • spremenil: acookook ()

darkolord ::

To je iz konzole ali preko IIS-ja? V konzoli vidiš kakšne napake? Če odpreš dev tools (F12) v browserju, kakšne errorje dobiš?

acookook ::

Preko konzole (kot sem te razumel).
Dobim failed to load resource......site.js, site.css, jquery.min.js, favicon.
Prav tako mi ne najde knjižnice bootstrap table.
Če zaženem preko dockerja/visual studia ni problem....Se pa vse razen jqueryja. pridobiva s CDN-jev, ker mi bundlanje assetov ni uspelo.

Na IIS niti ne vem kako pravilno deployati. Ker je enih 10 stvari že gor. In pravim....tega se ne smem tikati, drugače si moram poiskati drug hosting provider.
.

Zgodovina sprememb…

  • spremenil: acookook ()

acookook ::

@darko, vseeno bi pol raje poskusil z dockerjem. Bi bil mogoče razlog, da se je docker file zakeširal v Visual Studiu, in mi zato vsi poskusi spremeniti environment failajo? Tudi, če rešim potem še certifikate in sam deploy, mi še samo povezava z bazo, ki prav tako ne dela, če prav specificiran connection string deluje v debug načinu. Bi v bodoče res rabil nek razširjen tutorial in domače branje vse teh docsov. :))
.

acookook ::

Okej, celo mi je nekaj ratalo deployati na IIS, me pa še samo povezava na bazo muči. Tole je connection string v
appsettings.json
, do podatkov pa ne pridem.
"Server=localhost\SQLEXPRESS2019;Initial Catalog=myProject;Persist Security Info=True;User ID=myProjectUser;Pooling=False;MultipleActiveResultSets=False;Connect Timeout=60;Encrypt=False;TrustServerCertificate=False"

Podoben connection string nucam,da na SQL server (localdb na development mašini in staging) pusham spremembe baze s pomočjo publish xml-a.
Nekje ga biksam, ne vem pa točno kje. Koda pravilno deluje, samo povezava ni pravilna. Kaj še lahko v server management konzoli pogledam?
Aja še to. Za test sta IIS in sql server v isti virtualki.
.

Zgodovina sprememb…

  • spremenil: acookook ()

darkolord ::

Sigurno se ti nekje izpiše, kakšn napaka je pri povezavi z bazo ....

acookook ::

Ne, samo error 500 dobim....V event loggerju pa je samo to:
Application '/LM/W3SVC/13/ROOT' with physical root 'C:\inetpub\wwwroot\myOrders.mySite.si\' failed to load coreclr. Exception message:
CLR worker thread exited prematurely
.

darkolord ::

Čak, če iz iste mape v cmdju poženeš exe, a se sploh zalaufa app?

acookook ::

ja, app se zdaj zalaufa in lahko dostopam preko mreže, če vnesem ip serverja plus custom http port.
.

darkolord ::

OK, kaj pa v cmdju vidiš, če greš nekam, kjer bi moral dostopati do bazi?

acookook ::

Nič posebnega, kar bi nakazavalo na kakšen error. Čudi me tudi to, da sem za test naredil Relase in ima appsettings.Release.json sploh ne povoha. Ampak ok, če že v default appsettingsih to definiram in uspem povezati je zaenkrat že zmaga.
.

acookook ::

Še TCP/IP propertyji za SQL server conf manager (bom našteval samo tiste z vrednostjo "YES"
za IP 127.0.0.1: Active, Enabled, TCP Dyn Ports (0), TCP Port (1433,1434)
isto za javen IP in link local in loopback na IPv6.
Pod IPAll imam dinamične porte nastavljene na 61173, in TCP Port na 1433,1434.
.

darkolord ::

Čudno je, da ne vidiš napake.

Torej, če:
- v cmd.exe odpreš tvoj.app.exe
- se povežeš lokalno z browserjem na localhost:5000 ali :5001

Ti dela, dokler ne probaš dostopati do baze. Potem dobiš error 500 v appu, v cmd oknu pa nič?

acookook ::

ne ne, connection string je bil težava tle je ta pravi connection string:
Server=localhost;Initial Catalog=myProject;Persist Security Info=True;User ID=myProjectUser;Password=pl4v4R1ba5mRDi@;Pooling=False;MultipleActiveResultSets=False;Connect Timeout=60;Encrypt=False;TrustServerCertificate=False
Sedaj upam, da deluje, bom ma moral sproti popravljati to packarijo, da bo na koncu lep izdelek.
.


Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

ASP .NET MVC - kje začeti?

Oddelek: Izdelava spletišč
131156 (234) acookook
»

Asp.net

Oddelek: Programiranje
181947 (630) acookook
»

CI/CD težave

Oddelek: Programiranje
261849 (935) acookook
»

Keylogger

Oddelek: Programska oprema
352602 (1329) Blisk
»

[ASP.NET] problem

Oddelek: Izdelava spletišč
382147 (1797) Microsoft

Več podobnih tem