דילוג לתוכן
  • דף הבית
  • קטגוריות
  • פוסטים אחרונים
  • משתמשים
  • חיפוש
  • חוקי הפורום
כיווץ
תחומים

תחומים - פורום חרדי מקצועי

💡 רוצה לזכור קריאת שמע בזמן? לחץ כאן!
yyyY

yyy

@yyy
אודות
פוסטים
168
נושאים
46
קבוצות
0
עוקבים
0
עוקב אחרי
0

פוסטים

פוסטים אחרונים הגבוה ביותר שנוי במחלוקת

  • תהליך העלאת מערכת fullstack מה-localhost לעולם האמיתי
    yyyY yyy

    בשל המעבר לדוטנט 7 אני נתקל בשגיאת CORS עקשנית. עד היום בדוטנט 3 אם הייתי רוצה לאפשר פניות מכיוון הלקוח הייתי מגדיר כך:

    app.UseCors(x => x
                 .AllowAnyMethod()
                 .AllowAnyHeader()
                 .SetIsOriginAllowed(origin => true) // allow any origin
    

    בדוטנט 7 ע"פ מייקרוסופט הדרך אמורה להיות כך:

    var MyAllowSpecificOrigins = "_myAllowSpecificOrigins";
    var builder = WebApplication.CreateBuilder(args);
    
    builder.Services.AddCors(options =>
    {
        var MyAllowSpecificOrigins = "_MyAllowSubdomainPolicy";
        options.AddPolicy(name: MyAllowSpecificOrigins,
            policy =>
            {
                policy.WithOrigins("http://localhost:4200")
                    .SetIsOriginAllowedToAllowWildcardSubdomains();
            });
    });
    ...
    app.UseCors(MyAllowSpecificOrigins);
    app.UseAuthorization();
    

    וזה כדי לאשר לכה"פ לדפדפן עם אנגולר על localhost לגשת לשרת.

    ע"פ המוצע כאן ניסיתי לשנות לזה:

    builder.Services.AddCors(options =>
    {
    
        options.AddPolicy(myAllowSpecificOrigins, policy => {
            policy.WithOrigins("https://localhost:4200", "http://localhost:4200");
            policy.WithHeaders("*"); 
        });
    });
    

    לא עזר.
    בנוסף ניסיתי להוסיף בקונטרולר את שורת הקודה הבאה

    HttpContext.Response.Headers.Add("Access-Control-Allow-Origin", "http://localhost:4200");
    

    לא עזר.

    כך נראה האנגולר שקורא לדוטנט :

    getNumberFromDb(): Observable<number> {
    
        let httpOptions = {
          headers: new HttpHeaders({
            'Content-Type': 'application/json;charset=utf-8',
            Authorization: "",
    
          }),
        };
    
        return this.httpClient.get<number>(this.getNumberFromDbURL, httpOptions);
      }
    

    איך אפשר לאפשר לכל דפדפן לפנות לדוטנט בלי לקבל את השגיאה הנ"ל?
    המון תודה!

    עריכה מאוחרת : הפיתרון הוא

    1. למחוק את ה-headers מהאנגולר
    2. למחוק את המידלוור app.UseHttpsRedirection();

  • תהליך העלאת מערכת fullstack מה-localhost לעולם האמיתי
    yyyY yyy

    רק api
    דוגמא
    https://domain/api/controller/method


  • תהליך העלאת מערכת fullstack מה-localhost לעולם האמיתי
    yyyY yyy

    @dovid
    קיבלתי. מעכשיו אני זורם איתך.
    אני כעת מבצע את מה שכתוב כאן.
    כעת יש לי תקשורת באמצעות הדפדפן המוגדרת ע"י קובץ ה- /etc/nginx/sites-available/default
    הזה:

    server {
         listen        80;
          server_name 62.88.198.72;
          location / {
            proxy_pass         http://127.0.0.1:5000;
            proxy_http_version 1.1;
            proxy_set_header   Upgrade $http_upgrade;
            proxy_set_header   Connection keep-alive;
            proxy_set_header   Host $host;
            proxy_cache_bypass $http_upgrade;
            proxy_set_header   X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header   X-Forwarded-Proto $scheme;
     }
    
      }
    

    השאלה כעת היא
    איך משלבים את ההגדרות של האנגולר דלעיל באותו קובץ(?)?


  • תהליך העלאת מערכת fullstack מה-localhost לעולם האמיתי
    yyyY yyy

    מתעד את נסיונותי להפעיל SSL תקין באמצעות Kestrel. (אולי יעזור למישהו בעתיד)
    הוספתי ב-launchSetting.json את הרשומה הבאה:

    "sslProd": {
         "commandName": "Project",
         "dotnetRunMessages": true,
         "launchBrowser": false,
         "launchUrl": "swagger",
         "applicationUrl": "https://localhost:443",
         "environmentVariables": {
           "ASPNETCORE_ENVIRONMENT": "Production"
         }
       }
    

    dotnet publish +winsp
    ועדיין כשאני מנסה לפנות באמצעות פורט 443 יש שגיאה:

    ubuntu@vps-c2df8674:~$  curl -I  http://localhost:443/api/Numbers/GetNumbersFromDotnet
    curl: (7) Failed to connect to localhost port 443: Connection refused
    

    ניסיתי עוד כמה פתרונות כמו זה
    וכן שינוי משתנה הסביבה ASPNETCORE_ENVIRONMENT ל-sslProd או production, ושום דבר לא עוזר. ה-ssl מסרב לתקשר. אני מתיאש לע"ע מהכיוון הזה ואנסה לחבר את ה-nginx בתור רוורס פרוקסי (למדתי מה זה), ואולי הוא ידע להעיר מהתרדמת את תקשורת ה-ssl.


  • תהליך העלאת מערכת fullstack מה-localhost לעולם האמיתי
    yyyY yyy

    @yyy כתב בתהליך העלאת מערכת fullstack מה-localhost לעולם האמיתי:

    מי הוא זה ואיזה הוא? אני לא התקנתי כלום בהקשר זה ברמת השרת.

    Kestrel.


  • קובץ *.csproj לא מיוצר אחרי פקודת dotnet publish
    yyyY yyy

    מנסה להריץ על אובונטו סרבר וגם בחלונות את הפקודה הבאה
    dotnet run --launch-profile myProfile
    אבל אני נתקל בשגיאה הבאה:

    Couldn't find a project to run. Ensure a project exists in /home/ubuntu/dotnet7proj, or pass the path to the project using --project.
    

    בדקתי קצת וראיתי שזה עשוי לנבוע מכך שאין קובץ *.csproj בתיקייה Publish. אכן אין לי קובץ כזה וממה שהבנתי הוא אמור להיות מיוצר אוטומטית ע"י הפקודה dotnet publish. מישהו יכול לאשר לי את זה?
    בנוסף רק לוודא הפקודה שייכת למצב פרודקשן, או פיתוח? אני הבנתי שלפרודקשן והיא רק בוחרת את הפרופיל שהוגדר ב-launchsetting.json.

    דוטנט 7 -sdk ו-runtime.

    נ.ב. ניסיתי להוסיף את שורות הקוד הבאות לקובץ csproj וזה לא עזר.

    <GenerateProjectOutputOnPublish>true</GenerateProjectOutputOnPublish>  
      <PublishSingleFile>false</PublishSingleFile>    <GeneratePublishProfile>true</GeneratePublishProfile>
    

    תודה רבה.


  • תהליך העלאת מערכת fullstack מה-localhost לעולם האמיתי
    yyyY yyy

    @dovid כתב בתהליך העלאת מערכת fullstack מה-localhost לעולם האמיתי:

    למה שיעבוד? ssl זה לא משהו שמגיע "כי למה לא".

    כי אני רואה שיש באובונטו איזה שרת בסיסי שיודע "לדבר" עם הדוטנט שלי, למרות שלא נקפתי אצבע בעניין. כמובן איני בא לחלוק אלא להבהיר מהיכן טעותי.

    תחבר את הnginx לasp כפי המדריך של מיקרוסופט,
    את שכבת הSSL תוסיף בהמשך, מה בוער?

    אם אני לא אתעסק עם ה-ssl מה העניין לחבר את ה-Nginx? כמו שהראתי יש לי תקשורת לא ssl-ית.

    @yyy כתב בתהליך העלאת מערכת fullstack מה-localhost לעולם האמיתי:

    (יש לי חשד שבאנגולר אתה פונה לlocalhost:5000. זה טעות נפוצה אצל מפתחי אנגולר שהם לא מודעים כלל ליום שאחרי הפיתוח.
    זה כמובן לא יעבוד, הרי הlocalhost לא יילך איתך למחשבי הגולשים.
    מה שצריך לעשות תמיד זה או לפנות באנגולר לאותו דומיין (ע"י כתובת יחסית שמתחילה בלוכסן) או לדומיין אחר גם בעת הפיתוח.
    איך זה יעבוד? הרי בזמן הפיתוח אתה עובד מול localhost? בשביל זה מגדירים בהגדרות הserve פרוקסי שאומר שכל כתובת שמתחילה בapi או כל כלל אחר, אנא נתב אותה נכון לשעת הפיתוח לlocalhost:5000).

    אני עדיין לא מתעסק אפילו בחיבור האנגולר לדוטנט, אני רוצה לראות שכל המרכיבים הרלוונטיים (DB,דוטנט,אנגולר) עובדים תקין ואח"כ לקנפג את החיבורים ביניהם. בכ"א אקח לתשומת ליבי את ההערה שלך להמשך.


  • תהליך העלאת מערכת fullstack מה-localhost לעולם האמיתי
    yyyY yyy

    @yossiz
    לא ידעתי ש-nginx מטפל גם בשרת, הכוונתי אותו רק לאנגולר.
    הנה:

    ubuntu@vps-c2df8674:~$ cat /etc/nginx/sites-enabled/default
     server {
           listen 80;
           server_name 62.88.198.72;
    
           root /var/www/html;
           index index.html;
    
           location / {
               try_files $uri $uri/ /index.html;
           }
       }
    

    @yossiz כתב בתהליך העלאת מערכת fullstack מה-localhost לעולם האמיתי:

    לשרת שמדבר HTTP פשוט

    מי הוא זה ואיזה הוא? אני לא התקנתי כלום בהקשר זה ברמת השרת.


  • תהליך העלאת מערכת fullstack מה-localhost לעולם האמיתי
    yyyY yyy

    אוקי אז הנה תקציר.
    התקנתי nginx + קונפיגורציה והאנגולר עולה בלי צד שרת כמובן.
    לאחר התקשקשות עם תאימות לגרסאות מיושנות של דוטנט, הגעתי לתובנה שעדיף פשוט לעבוד על גרסה שהיא "out of the box" (יש תרגום מקובל לעברית?).
    העברתי את הפרוייקט לדוטנט 7 והפרוייקט רץ. בשביל הטסט יצרתי שני קונטרולרים, אחד מחזיר מספר מדוטנט עצמו ואחד מחזיר מה-DB.
    ב-DB עצמו עוד לא נגעתי ואני מנסה לראות קודם שהתקשורת עם הדוטנט עובדת טוב.

    מה שקורה שכשאני מנסה לגשת לקונטרולר באמצעות tls/ssl (במילים אחרות https) מקבל את השגיאה הנ"ל.
    דוגמא

    //with http
    ubuntu@vps-c2df8674:~$ curl http://localhost:5000/api/Numbers/GetNumbersFromDotnet
    1 2 3 4 5 from dotnet
    //with https
    ubuntu@vps-c2df8674:~$ curl https://localhost:5000/api/Numbers/GetNumbersFromDotnet
    curl: (35) error:1408F10B:SSL routines:ssl3_get_record:wrong version number
    //wrong
    ubuntu@vps-c2df8674:~$ curl --tlsv1 https://localhost:5000/api/Numbers/GetNumbersFromDotnet
    curl: (35) error:1408F10B:SSL routines:ssl3_get_record:wrong version number
    
    

    שאלה נוספת:
    האם curl הוא הכלי המקובל לנסיונות שכאלו (אין UI כמובן)?

    תודה רבה.


  • תהליך העלאת מערכת fullstack מה-localhost לעולם האמיתי
    yyyY yyy

    חזרתי לאחר הפסקת מה.

    האנגולר עובד הדוטנט רץ. מותקן openSsl.

    אני מקבל את השגיאה הבאה כשאני מנסה ליצור תקשורת https

    curl: (35) error:1408F10B:SSL routines:ssl3_get_record:wrong version number
    

    זה קשור לכך שלא מוגדר לי Kestrel ב-AppSetting.json אלא רק iis express?
    תודה!


  • תהליך העלאת מערכת fullstack מה-localhost לעולם האמיתי
    yyyY yyy

    @צדיק-תמים כתב בתהליך העלאת מערכת fullstack מה-localhost לעולם האמיתי:

    @yyy כתב בתהליך העלאת מערכת fullstack מה-localhost לעולם האמיתי:

    שאלה נוספת: מה עדיף לאנגולר Apache או Nginx?

    אנגולר אחרי build זה בעצם קבצים סטטיים (בעיקר טקסט, אולי גם כמה תמונות),
    אני ממליץ על Caddy בגלל הקונפיגורציה שלו שהיא קלה ופשוטה בצורה מדהימה + נותן HTTPS אוטומטי באופן מובנה,
    הפרומיל ביצועים שאולי תקבל יותר בnginx הוא לא משהו שרלוונטי לסדרי גודל שלך, וגם לא בטוח שהוא בכלל קיים.

    אשמור את המלצתך להמשך. כעת אני מעוניין להתנסות בכלים היותר סנטנדרטיים ומצויים.


  • תהליך העלאת מערכת fullstack מה-localhost לעולם האמיתי
    yyyY yyy

    @dovid כתב בתהליך העלאת מערכת fullstack מה-localhost לעולם האמיתי:

    עריכה: מיקרוסופט ממליצה על nginx כשרת פרוקסי עבור asp.net.

    ברשותך אולי תרחיב על זה, כי אני לא מכיר בהקשר הזה את הנושא של פרוקסי. אני רגיל שהאנגולר פונה ישר לדונטנט בלי מתווכים למיניהם, אז בשביל מה צריך להכניס פה מישהו נוסף?


  • תהליך העלאת מערכת fullstack מה-localhost לעולם האמיתי
    yyyY yyy

    שאלה נוספת: מה עדיף לאנגולר Apache או Nginx?


  • תהליך העלאת מערכת fullstack מה-localhost לעולם האמיתי
    yyyY yyy

    העתקתי את קבצי ההרצה של הדוטנט אחרי ה-publish לשרת ובינתיים שאני מנסה להריץ את קובץ התוכנית באמצעות הפקודה

    dotnet myProgram
    

    נתקלתי בשתי שגיאות:

    שגיאה 1

    Process terminated. Couldn't find a valid ICU package installed on the system. Set the configuration flag System.Globalization.Invariant to true if you want to run with no globalization support.
       at System.Environment.FailFast(System.String)
       at System.Globalization.GlobalizationMode.GetGlobalizationInvariantMode()
       at System.Globalization.GlobalizationMode..cctor()
       at System.Globalization.CultureData.CreateCultureWithInvariantData()
       at System.Globalization.CultureData.get_Invariant()
       at System.Globalization.CultureInfo..cctor()
       at System.String.ToLowerInvariant()
       at Microsoft.DotNet.PlatformAbstractions.RuntimeEnvironment.GetArch()
       at Microsoft.DotNet.PlatformAbstractions.RuntimeEnvironment..cctor()
       at Microsoft.DotNet.PlatformAbstractions.RuntimeEnvironment.GetRuntimeIdentifier()
       at Microsoft.DotNet.Cli.MulticoreJitProfilePathCalculator.CalculateProfileRootPath()
       at Microsoft.DotNet.Cli.MulticoreJitActivator.StartCliProfileOptimization()
       at Microsoft.DotNet.Cli.MulticoreJitActivator.TryActivateMulticoreJit()
       at Microsoft.DotNet.Cli.Program.Main(System.String[])
    Aborted (core dumped)
    

    ממה שהבנתי חסר לו איזה מרכיב של תמיכה בגלובליזציה

    הפתרון שהוצע לי היה:

    sudo apt-get install libicu-dev
    

    זה לא עזר.
    פתרון נוסף הוא

     export DOTNET_SYSTEM_GLOBALIZATION_INVARIANT=true
    

    וזה לכאורה עובד אלא שיתכן שהשגיאה הבאה נובעת מפיתרון מאולתר זה.
    שגיאה 2

    No usable version of libssl was found
    Aborted (core dumped)
    

    הבנתי שהשגיאה נובעת מחוסר בספריית OpenSSL.
    ניסיתי את זה:

    sudo apt-get install libssl-dev
    

    והשגיאה עדיין ממשיכה.
    למישהו יש נסיון עם זה? פספסתי התקנה של משהו?


  • תהליך העלאת מערכת fullstack מה-localhost לעולם האמיתי
    yyyY yyy

    @קומפיונט נכון, וגם זה נכנס לתוקף רק אחרי ריסטרט של המערכת.


  • תהליך העלאת מערכת fullstack מה-localhost לעולם האמיתי
    yyyY yyy

    @קומפיונט זה אכן מה שעשיתי.


  • תהליך העלאת מערכת fullstack מה-localhost לעולם האמיתי
    yyyY yyy

    הפיתרון היה כך

    sudo find / -name dotnet
    

    זה הפלט

    /home/ubuntu/.dotnet/dotnet
    /etc/dotnet
    

    תכל'ס איך מתקדמים?


  • תהליך העלאת מערכת fullstack מה-localhost לעולם האמיתי
    yyyY yyy

    עכשיו הסרתי את גרסה 7 והנה כשאני מנסה שוב להריץ את הפקודה

    ./dotnet-install.sh --channel 3.1
    

    הוא מודיע לי בחגיגיות ש

    dotnet-install: .NET Core SDK with version '3.1.426' is already installed.
    

    ואז כדי לוודא שיש לי dotnet 3 בהתרגשות אני כותב :

    ubuntu@vps-XXX:~$ dotnet --info
    

    והוא מחזיר לי:

    -bash: /usr/bin/dotnet: No such file or directory
    
    

    איך אפשר לוודא באמת מה מותקן ומה לא?


  • תהליך העלאת מערכת fullstack מה-localhost לעולם האמיתי
    yyyY yyy

    ניסיתי להתקין באמצעות

    sudo apt-get install dotnet-sdk-3.1
    

    ןקיבלתי את זה

    Get:1 http://security.ubuntu.com/ubuntu lunar-security InRelease [109 kB]
    Hit:2 http://nova.clouds.archive.ubuntu.com/ubuntu lunar InRelease
    Hit:3 http://nova.clouds.archive.ubuntu.com/ubuntu lunar-updates InRelease
    Hit:4 http://nova.clouds.archive.ubuntu.com/ubuntu lunar-backports InRelease
    Fetched 109 kB in 1s (107 kB/s)
    Reading package lists... Done
    Reading package lists... Done
    Building dependency tree... Done
    Reading state information... Done
    E: Unable to locate package dotnet-sdk-3.1
    E: Couldn't find any package by glob 'dotnet-sdk-3.1'
    E: Couldn't find any package by regex 'dotnet-sdk-3.1'
    

    לכן ניסיתי את זה

    ubuntu@vps-XXX:~$ sudo chmod +x ./dotnet-install.sh
    ubuntu@vps-XXX:~$ ./dotnet-install.sh --channel 3.1
    

    אבל כשאני מריץ

    dotnet --info
    

    אני מקבל

    Host:
      Version:      7.0.5
      Architecture: x64
      Commit:       8042d61b17
    
    .NET SDKs installed:
      No SDKs were found.
    
    .NET runtimes installed:
      Microsoft.AspNetCore.App 7.0.5 [/usr/lib/dotnet/shared/Microsoft.AspNetCore.App]
      Microsoft.NETCore.App 7.0.5 [/usr/lib/dotnet/shared/Microsoft.NETCore.App]
    
    Other architectures found:
      None
    
    Environment variables:
      Not set
    
    global.json file:
      Not found
    
    Learn more:
      https://aka.ms/dotnet/info
    
    Download .NET:
      https://aka.ms/dotnet/download
    

    עוד פלט רלוונטי

    ubuntu@vps-XXX:~$ dotnet --list-sdks
    ubuntu@vps-XXX:~$ dotnet --list-runtimes
    Microsoft.AspNetCore.App 7.0.5 [/usr/lib/dotnet/shared/Microsoft.AspNetCore.App]
    Microsoft.NETCore.App 7.0.5 [/usr/lib/dotnet/shared/Microsoft.NETCore.App]
    

    בקיצור הוא על גרסה 7. אמשיך לעדכן...

  • 1
  • 2
  • 3
  • 4
  • 5
  • 8
  • 9
  • 3 / 9
  • התחברות

  • אין לך חשבון עדיין? הרשמה

  • התחברו או הירשמו כדי לחפש.
  • פוסט ראשון
    פוסט אחרון
0
  • דף הבית
  • קטגוריות
  • פוסטים אחרונים
  • משתמשים
  • חיפוש
  • חוקי הפורום