जानकारी - मैं VS कोड में अपनी (कोणीय 10 / ASP.Net 5) साइट को सफलतापूर्वक चला रहा हूं और डिबग कर रहा हूं, लोकलहोस्ट से कनेक्ट हो रहा है: 4200 >एनजी सर्व और> डॉटनेट रन के साथ, अब मैं इसे प्रकाशित करना चाहता हूं Azure करने के लिए, लेकिन पहले मैं इसे केवल Kestrel पर स्थानीय रूप से परीक्षण करना चाहता हूं, .Net API प्रोजेक्ट में wwwroot फ़ोल्डर में कोणीय प्रोजेक्ट बनाकर और स्थानीयहोस्ट से साइट चलाकर: 5001। मैं अपने एपीआई प्रोजेक्ट फ़ोल्डर में wwwroot के लिए (>एनजी बिल्ड) बनाता हूं, मैं wwwroot फ़ोल्डर में बनाई जा रही सभी कोणीय फाइलों को देखता हूं, और फिर मैं> डॉटनेट रन निष्पादित करता हूं।

समझा

अब सुन रहे हैं: https://localhost:5001

और फिर मैं उस यूआरएल को हिट करने के लिए ब्राउज़र खोलता हूं और मुझे टर्मिनल में ये त्रुटियां दिखाई देती हैं

जानकारी: Microsoft.AspNetCore.Hosting.Diagnostics[1] HTTP/1.1 प्रारंभ करने का अनुरोध https://localhost:5001/--जानकारी प्राप्त करें: Microsoft.AspNetCore.Authorization.DefaultAuthorizationService[2] प्राधिकरण विफल रहा। इन आवश्यकताओं को पूरा नहीं किया गया: DenyAnonymousAuthorizationRequirement: एक प्रमाणित उपयोगकर्ता की आवश्यकता है। जानकारी: Microsoft.AspNetCore.Authentication.JwtBearer.JwtBearerHandler[12] AuthenticationScheme: बियरर को चुनौती दी गई थी। जानकारी: Microsoft.AspNetCore.Authorization.DefaultAuthorizationService[2] प्राधिकरण विफल रहा। इन आवश्यकताओं को पूरा नहीं किया गया: DenyAnonymousAuthorizationRequirement: एक प्रमाणित उपयोगकर्ता की आवश्यकता है। जानकारी: Microsoft.AspNetCore.Authentication.JwtBearer.JwtBearerHandler[12] AuthenticationScheme: बियरर को चुनौती दी गई थी। जानकारी: Microsoft.AspNetCore.Hosting.Diagnostics[2] अनुरोध समाप्त HTTP/1.1 प्राप्त करें https://localhost:5001/ - - - 401 0 - 70.3847ms

प्रश्न - क्या यह एक कॉन्फ़िगरेशन समस्या है? एक CORS/अनुमति मुद्दा? एक प्रमाणीकरण मुद्दा? एक फ़ोल्डर/पथ समस्या?

यहां किसी की भी मदद करने के लिए अतिरिक्त कोड है जो मुझे यह समझने में मदद कर सकता है कि क्या हो रहा है

स्टार्टअप.सीएस

सेवाओं को कॉन्फ़िगर करें ()

public void ConfigureServices(IServiceCollection services)
    {
        services.AddAutoMapper(typeof(MappingEvents));
        services.AddAutoMapper(typeof(MappingMembers));
        services.AddAutoMapper(typeof(MappingUsers));
        services.AddAutoMapper(typeof(MappingYogabands));
        services.AddAutoMapper(typeof(MappingReviews));
        // services.AddControllers();
        services.AddControllers()
            .AddNewtonsoftJson(opt => 
            {
                opt.SerializerSettings.ReferenceLoopHandling =
                     Newtonsoft.Json.ReferenceLoopHandling.Ignore;
            });


        services.AddDbContext<DataContext>(x =>
            x.UseSqlServer(_config.GetConnectionString("SqlServerConnection"), y => y.UseNetTopologySuite()));

        services.AddTransient<IEmailSender, EmailSender>();
        services.Configure<AuthMessageSenderOptions>(_config.GetSection("SendGrid"));
        services.Configure<ConfirmationOptions>(_config.GetSection("Confirmation"));

        services.Configure<CloudinarySettings>(_config.GetSection("CloudinarySettings"));
        
        services.AddApplicationServices();
        services.AddIdentityServices(_config);
        services.AddSwaggerDocumentation();


        // telling out client app, that if it's running on an unsecure port, we won't return a header, 
        // that will allow our browser to display that information
        // * only allowed to access info from localhost:4200, all others will be denied?
        services.AddCors(opt => 
        {
            opt.AddPolicy("CorsPolicy", policy => 
            {
                policy.AllowAnyHeader().AllowAnyMethod().WithOrigins("https://localhost:4200");
            });
        });
    }

कॉन्फ़िगर करें ()

public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
    {
        app.UseMiddleware<ExceptionMiddleware>();

        // when coming into the server and we don't have an endpoint that matches the request, then we hit this below
        // it will then re direct to our error controller, pass in the status code and return an object result
        app.UseStatusCodePagesWithReExecute("/errors/{0}"); // after creating ErrorController

        app.UseHttpsRedirection();

        app.UseRouting();

        app.UseCors("CorsPolicy");

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

        app.UseSwaggerDocumention();

        app.UseEndpoints(endpoints =>
        {
            endpoints.MapControllers().RequireAuthorization();
            // endpoints.MapControllers();
            endpoints.MapFallbackToController("Index", "Fallback");
        });
    }

AddIdentityService () (ConfigureServices () में कहा जाता है)

public static IServiceCollection AddIdentityServices(this IServiceCollection services, IConfiguration config)
    {
        services.Configure<IdentityOptions>(options =>
        {
            options.User.RequireUniqueEmail = true;
            options.User.AllowedUserNameCharacters = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789-._@";
        });

        var builder = services.AddIdentityCore<User>(opt =>
        {
            opt.Password.RequireDigit = false;
            opt.Password.RequiredLength = 2;
            opt.Password.RequireNonAlphanumeric = false;
            opt.Password.RequireUppercase = false;
            // *******************************************************
            // for email confirmation
            opt.SignIn.RequireConfirmedEmail = true;
            // *******************************************************
        });

        builder = new IdentityBuilder(builder.UserType, typeof(Role), builder.Services);
        // AddDefaultTokenProviders() allows the ability to create a token to send to user when they forgot password
        builder.AddEntityFrameworkStores<DataContext>().AddDefaultTokenProviders();
        
        // for roles
        builder.AddRoleValidator<RoleValidator<Role>>();
        builder.AddRoleManager<RoleManager<Role>>();

        builder.AddSignInManager<SignInManager<User>>();

        services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme)
            .AddJwtBearer(options => 
            {
                options.TokenValidationParameters = new TokenValidationParameters
                {
                    ValidateIssuerSigningKey = true,
                    IssuerSigningKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(config["Token:Key"])),
                    ValidIssuer = config["Token:Issuer"],
                    ValidateIssuer = true,
                    ValidateAudience = false
                };
            });

        services.AddAuthorization(options =>
        {
            options.AddPolicy("RequireAdminRole", policy => policy.RequireRole("Admin"));
            options.AddPolicy("ModeratePhotoRole", policy => policy.RequireRole("Admin", "Moderator"));
            options.AddPolicy("VipOnly", policy => policy.RequireRole("VIP"));
        });

        return services;
    }

Angular.json फ़ाइल का निर्माण खंड

"build": {
      "builder": "@angular-devkit/build-angular:browser",
      "options": {
        "allowedCommonJsDependencies": ["angular2-wizard", "hammerjs"],
        "outputPath": "../API/wwwroot",
        "index": "src/index.html",
        "main": "src/main.ts",
        "polyfills": "src/polyfills.ts",
        "tsConfig": "tsconfig.app.json",
        "aot": true,
        "assets": [
          "src/favicon.ico",
          "src/assets"
        ],
        "styles": [
          "src/styles.scss"
        ],
        "scripts": []
      },
      "configurations": {
        "production": {
          "fileReplacements": [
            {
              "replace": "src/environments/environment.ts",
              "with": "src/environments/environment.prod.ts"
            }
          ],
          "optimization": true,
          "outputHashing": "all",
          "sourceMap": false,
          "extractCss": true,
          "namedChunks": false,
          "extractLicenses": true,
          "vendorChunk": false,
          "buildOptimizer": true,
          "budgets": [
            {
              "type": "initial",
              "maximumWarning": "2mb",
              "maximumError": "5mb"
            },
            {
              "type": "anyComponentStyle",
              "maximumWarning": "6kb",
              "maximumError": "10kb"
            }
          ]
        }
      }
    }

मेरी कोणीय परियोजना में Environment.ts

export const environment = {
  production: false,
  apiUrl: 'https://localhost:5001/api/'
};
-1
user1186050 18 जिंदा 2021, 06:23
क्या आपके पास ASP.NET कोर में एक इंडेक्स कंट्रोलर है जो कोणीय ऐप से index.html परोसता है? आप नियंत्रक को [AllowAnonymous] विशेषता जोड़ सकते हैं। एक अन्य विचार प्राधिकरण फ़िल्टर होगा।
 – 
sombrerogalaxy
24 जिंदा 2021, 03:00
नहीं, मेरे पास इंडेक्स कंट्रोलर नहीं है। लोड होने वाला पहला पृष्ठ किसी भी नियंत्रक को कॉल नहीं करता है। और होम पेज जिसे साइटलाड्स पहले से ही अनाम के साथ सेट होने पर सबसे पहले कॉल किया जाता है
 – 
user1186050
24 जिंदा 2021, 10:49
कौन सा कोड index.html परोसता है? आपके पास है: endpoints.MapFallbackToController("Index", "Fallback"); यह क्या है? क्या आपने स्थिर फ़ाइलें?
 – 
sombrerogalaxy
24 जिंदा 2021, 17:55
हैलो, आप रूट पथ को याद कर रहे हैं, कृपया नीचे मेरा उत्तर देखें।
 – 
Transformer
24 जिंदा 2021, 22:37

1 उत्तर

सबसे बढ़िया उत्तर

मैंने अपनी समस्या ठीक की। मैंने जो किया था यह रहा।

  1. इस लाइन को Startup.cs . में Configure() में जोड़ा गया है

    ऐप.यूजस्टेटिकफाइल्स ();

  2. निकाला गया

    .आवश्यकता प्राधिकरण () से

    समापन बिंदु। मानचित्र नियंत्रक ()। आवश्यकता प्राधिकरण ();

अब यह ठीक काम कर रहा है, मेरे एपीआई प्रोजेक्ट में wwwroot से मेरा एनजी ऐप चला रहा है

0
user1186050 25 जिंदा 2021, 04:40