Quantcast
Channel: ASP.NET Core
Viewing all 9386 articles
Browse latest View live

replacement of System.ServiceModel.Configuration in .NET Core

$
0
0

Hi Team

Can you please share the replacement of the System.ServiceModel.Configuration in .NET Core

any suggestion and help will be highly appreciated on how to proceed further on this.


how to implement clientsection in asp.net core 3.1

$
0
0

I tried a lot to implement clientsection but no luck

How to implement clientsection in asp.net core i am migrating asp.net project to .net core 3.1 but wcf is not supported here and clientsection code is breaking

below

var appConfig = ConfigurationManager.OpenExeConfiguration(Assembly.GetExecutingAssembly().Location);
ChannelEndpointElementCollection channelEndpointElementCollection = ((System.ServiceModel.Configuration.ClientSection)(appConfig.GetSection("system.serviceModel/client"))).Endpoints;

any suggestion and help will be highly appreciated on how to proceed further on this.

ASP.NET 3.1 Core : System.FieldAccessException

$
0
0

I am getting exception in my Asp.Net core 3.1 application as below

System.FieldAccessException: Cannot set initonly static field 'Field' after type 'TestReadOnly' is initialized.

Test.GetType().GetField("ImmediateTest", BindingFlags.NonPublic | BindingFlags.Static)
        .SetValue(Test, Timeout.Infinite);

Microsoft.Data.SqlClient.SqlException (0x80131904): The connection is broken and recovery is not possible. The connection is marked by the client driver as unrecoverable. No attempt was made to restore the connection.

$
0
0

Hello,

I hope I'm in the right forum ;), if not please kindly just move the post.

I'm currently developing an .net core 3.1.2 console app running in a Linux docker container under Azure.

It uses a S0 DB instance in Azure to keep it's data (Later going to up-scale).

I have very large batch transactions (100k insert's,deletes,updates taking up to over 1 hour) and experience to following error sometimes on the application side:

Microsoft.Data.SqlClient.SqlException (0x80131904):
The connection is broken and recovery is not possible.
The connection is marked by the client driver as unrecoverable. No attempt was made to restore the connection.

My SQL connection string looks as follows:

Server=tcp:xxxxxx.database.windows.net,1433;Initial Catalog=xxxxxxx;Persist Security Info=False;User ID=xxxxxx;Password=xxxxxxx;MultipleActiveResultSets=True;Encrypt=True;TrustServerCertificate=False;Connection Timeout=900;Min Pool Size=0;Max Pool Size=300;Connection Lifetime=0;ConnectRetryCount=90;ConnectRetryInterval=10

I'm using the following package version of Microsoft.Data.SQLClient: 2.0.0-preview2.20084.1

(By the way: When I switch back to the old System.Data.SQLClient the problem seems to be not appearing)

The error related stack trace is:

2020-03-31T18:09:02.622478644Z [33m ---> Microsoft.Data.SqlClient.SqlException (0x80131904): The connection is broken and recovery is not possible. The connection is marked by the client driver as unrecoverable. No attempt was made to restore the connection.[0m
2020-03-31T18:09:02.622484944Z [33m at Microsoft.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection, Action`1 wrapCloseInAction)[0m
2020-03-31T18:09:02.622489644Z [33m at Microsoft.Data.SqlClient.SqlConnection.ValidateAndReconnect(Action beforeDisconnect, Int32 timeout)[0m
2020-03-31T18:09:02.622513143Z [33m at Microsoft.Data.SqlClient.SqlCommand.RunExecuteReaderTds(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, Boolean isAsync, Int32 timeout, Task& task, Boolean asyncWrite, Boolean inRetry, SqlDataReader ds, Boolean describeParameterEncryptionRequest)[0m
2020-03-31T18:09:02.622518443Z [33m at Microsoft.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, TaskCompletionSource`1 completion, Int32 timeout, Task& task, Boolean& usedCache, Boolean asyncWrite, Boolean inRetry, String method)[0m
2020-03-31T18:09:02.622523543Z [33m at Microsoft.Data.SqlClient.SqlCommand.InternalExecuteNonQuery(TaskCompletionSource`1 completion, Boolean sendToPipe, Int32 timeout, Boolean& usedCache, Boolean asyncWrite, Boolean inRetry, String methodName)[0m
2020-03-31T18:09:02.622528443Z [33m at Microsoft.Data.SqlClient.SqlCommand.BeginExecuteNonQueryInternal(CommandBehavior behavior, AsyncCallback callback, Object stateObject, Int32 timeout, Boolean inRetry, Boolean asyncWrite)[0m
2020-03-31T18:09:02.622533043Z [33m at Microsoft.Data.SqlClient.SqlCommand.BeginExecuteNonQueryAsync(AsyncCallback callback, Object stateObject)[0m
2020-03-31T18:09:02.622537543Z [33m at System.Threading.Tasks.TaskFactory`1.FromAsyncImpl(Func`3 beginMethod, Func`2 endFunction, Action`1 endAction, Object state, TaskCreationOptions creationOptions)[0m
2020-03-31T18:09:02.622542843Z [33m at Microsoft.Data.SqlClient.SqlCommand.ExecuteNonQueryAsync(CancellationToken cancellationToken)[0m

I hope someone could help me out here. Otherwise I will need to use the old System.Data.SQLClient.

I'm just wondering how the connection can break (and is not recoverable) since app side and DB side are both on Azure.

Thx a lot.

Best Regards,

Markus

how to Localization and friendly routes in 3.1 MVC

$
0
0

Hi,
I create new project asp.core 3.1 mvc with localization

how can i use routes like /culture/controller/action

language switching works well, but with controller/action/culture=en

and also the default language doesn't work

my startup.cs

using System.Globalization;
using base_project.Models;
using base_project.Services.Mailing;
using base_project.Validation;
using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Hosting;
using Microsoft.AspNetCore.Localization;
using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Mvc.Razor;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;

namespace base_project
{
    public class Startup
    {
        public Startup(IConfiguration configuration)
        {
            Configuration = configuration;
        }

        public IConfiguration Configuration { get; }

        // This method gets called by the runtime. Use this method to add services to the container.
        public void ConfigureServices(IServiceCollection services)
        {
            services.AddControllersWithViews();
            services.AddScoped<IMailSendLogic, MailSendLogic>();
            /**** LOCALIZATION ****/
            services.AddLocalization(options => options.ResourcesPath = "Resources");
            services.AddMvc().AddViewLocalization(LanguageViewLocationExpanderFormat.Suffix);
            services.AddMvc().AddDataAnnotationsLocalization(options => {
                options.DataAnnotationLocalizerProvider = (type, factory) =>
                    factory.Create(typeof(SharedErrorMessages));
            });

            services.Configure<MvcOptions>(options =>
            {
                options.ModelMetadataDetailsProviders.Add(new CustomValidationProvider());
            });

            services.Configure<RequestLocalizationOptions>(options =>
            {
                var supportedCultures = new[]
                {
                    new CultureInfo("ca"),
                    new CultureInfo("es"),
                    new CultureInfo("en")
                };

                //options.DefaultRequestCulture = new RequestCulture("en-US", "en-US");
                options.DefaultRequestCulture = new RequestCulture("es");
                options.SupportedCultures = supportedCultures;
                options.SupportedUICultures = supportedCultures;
            });

            services.Configure<ReCAPTCHASettings>(Configuration.GetSection("GooglereCAPTCHA"));
            /**** END LOCALIZATION ****/
        }

        // This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
        public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
        {
            if (env.IsDevelopment())
            {
                app.UseDeveloperExceptionPage();
            }
            else
            {
                app.UseExceptionHandler("/Home/Error");
            }
            app.UseStaticFiles();

            app.UseRouting();

            app.UseAuthorization();

            app.UseRequestLocalization();

            //app.UseEndpoints(endpoints =>
            //{
            //    endpoints.MapControllerRoute(
            //        name: "default",
            //        pattern: "{culture=es}/{controller=Home}/{action=Index}/{id?}");
            //});
            app.UseEndpoints(endpoints =>
            {
                endpoints.MapControllerRoute(
                    name: "default",
                    pattern: "{controller=Home}/{action=Index}/{id?}");
            });
        }
    }
}

How to switch to "View"?

$
0
0

Question.
1. What HTML page elements to use to follow links to other View?
Example.
1.1 - <a> </a>
1.2 - <input type = "submit" name = "name" value = "submit_1" />
1.3 - <button> </button>
others?
 
2. What principles are used to switch to View?
What are the most effective principles?
What are the most preferred principles?
 
Example.
2.1 Follow direct links (href = "~ / Views / View1 /");
2.2 Transition using the controller method;
I understand correctly?
 
3. Ways to click on the links?
What are the most effective ways?
What are the most preferred methods?
Example.
3.1 - href;
3.2 - tag-helpers;
others?
 
4. Is it possible to place several `View` in the folder of one controller?
Example \ Home \ View0.cshtml;
 
Description.
I understand that the question is probably wide, so at least I will be grateful for a short answer to the question.
Please apply the answer to my project structure.
Browse Pages:
 - \ Home \ View0.cshtml;
 - \ View1 \ Index.cshtml.
 
Code (my attempts).

HomeController.cs

using Microsoft.AspNetCore.Mvc;

namespace WebAppCore.Controllers
{
public class HomeController : Controller
{
public ActionResult Index()
{
return View();
}

public ActionResult View1()
{
return View();
}

public ActionResult View2()
{
return View();
}


}
}

\Home\Index.cshtml

@addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers<h1> *** Test View Main ***</h1><h2> *** From the box ***</h2><a href="~/Views/View1/">A_View1</a><input type="submit" name="name" value="submit_1" /><button>button_1</button><h2> *** Tag hepler ***</h2><a asp-action="View1">A_action</a><a action="View1">A_action</a><button asp-action="View1">button_1_1</button>

Enterprise Multi layer Web Application in ASP.NET Core

$
0
0

Hi All,

I am working on enterprise application where I have separated BusinessEntities(Class Library .Net Core), DataModel(Class Library .Net Core), BusinessServices (Class Library .Net Core) and ASP.NET Razor Pages application.

Firstly, I am trying to achieve my application should be totally loosely coupled and also Data Model should be inaccessible (not require to add reference) to Presentation Layer (Razor Pages app). 

Two things I need to discuss:

  1. I added reference of DataModel to BusinessServices and BusinessServices to ASP.NET Razor Pages app (UI Presentation). But, still I could access the DataModel by adding namespace of DataModel. Is it okay? Since, in ASP.NET MVC (.Net Framework) you wont be able to even add the namespace of DataModel unless you Add reference of project. 
  2.  I am facing problem in resolving the DataModel Class & Interface. Since I cannot access in UI/Startup.cs, how can I resolve UnitOfWork and IUnitOfWork in BusinessServices. Like I do in startup.cs as :
  services.AddTransient<IDepartmentServices, DepartmentServices>();

So, in this case also do I need to explicitly create a new project Resolver to resolve the dependencies?

Uncaught (in promise) Error: Failed to invoke 'XXXXX' due to an error on the server

$
0
0
<div class="post-text" itemprop="text">

I created a .net core chat application using SignalR and I used WebRTC for video calls. As I need to send the SDP to the receiver using server method so I created a hub method call "SendOffer". When I click Video call button I have invoked this "SendOffer" method. I have put the client side code below

var connection =new signalR.HubConnectionBuilder().withUrl('/chat').build();constPeer=newRTCPeerConnection();const video = document.querySelector('video');const constraints ={'video':true,'audio':true}

document.getElementById("sendVideo").addEventListener("click",function(event){

    navigator.mediaDevices.getUserMedia({
        video:true,
        audio:true,}).then(function(stream){
        video.srcObject = stream
        video.play();//Peer.addStream(stream);Peer.createOffer().then(sdp =>Peer.setLocalDescription(sdp)).then(function(){
                console.log(Peer.localDescription);//connection.invoke("SendOffer", Peer.localDescription).catch(function (err) {//    return console.error(err.toString());
                connection.invoke("SendOffer",Peer.localDescription);})});})

But this gives an error in the console log and not working. blow is the error

signalr.js:2088 Uncaught (in promise) Error: Failed to invoke 'SendOffer' due to an error on the server. at _this.callbacks. (signalr.js:2088) at HubConnection.processIncomingData (signalr.js:2182) at WebSocketTransport.HubConnection.connection.onreceive (signalr.js:1905) at WebSocket.webSocket.onmessage (signalr.js:3949)

Can any one please help me to solve this error.

</div>

Error while publishing project from visual studio 16.5.2

$
0
0

Hello,

I recently upgraded to Visual Studio Community 2019 16.5.2. My current solution comprises of several projects and all of them are targeted to .NET Core 3.1

When I am trying to publish my application from Visual Studio, I get the below error:

Project GCB.Storage is not compatible with netcoreapp3.0 (.NETCoreApp,Version=v3.0) / win-x64. Project GCB.Storage supports: netcoreapp3.1 (.NETCoreApp,Version=v3.1)

I am not sure why it is complaining even though I changed the target version to .net core 3.1. I looked at control panel on the server where I am publishing and it has "Microsoft .NET Core SDK 3.1.201 (x64) from Visual Studio". Do I need to configure/install something on the server?

Any pointers?

Thanks

How to make File Upload a required field

$
0
0

I have a file upload input where I want to make it a required field in my view. How do I do that. I assume you can't do it as an attribute in the view model?

View:

<div class="form-group col-md-8"><div class="form-group col-md-8"><div asp-validation-summary="All" id="validation-error" class="text-danger custom-validation-summary"></div></div><label class="control-label">Document Type</label>
    @Html.DropDownListFor(m => m.DocumentType,      
        Model.DocumentTypes,        "- Please select a document type -",        
        new { @class = "form-control" })</div><div class="form-group col-md-8"><label class="control-label">Title</label><input id="document-title" asp-for="@Model.Document.Title" class="form-control" /></div><div class="form-group col-md-8"><label class="control-label">Upload file:</label></div><div class="form-group col-md-8">
    @{<input id="document-item-file-upload" type="file" name="files" />
    }</div><div class="form-group col-md-8 col-lg-4"><label class="control-label">Date </label><div class="input-group date" id="document-date" data-target-input="nearest"><input type="text" class="form-control" data-target="#document-date"
               asp-for="@Model.Document.Date" /><span class="input-group-addon" data-target="#document-date" data-toggle="datetimepicker"><span class="fa fa-calendar"></span></span></div></div><div class="form-group col-md-12"><button id="add-another-document"
            type="button"
            class="btn btn-forum col-sm-12 col-md-7 col-lg-4">Add & Create Another</button><input id="document-submit" type="button"
           value="Add & Return to Documents"
           class="btn btn-forum col-sm-12 col-md-7 col-lg-4" /><button id="document-cancel"
            class="cancel btn btn-forum col-sm-12 col-md-8 col-lg-3"
            type="button">Return to Documents</button></div>

View Model:

public class CreateEditDocumentViewModel
    {
        public int DocumentId { get; set; }
        public string Title { get; set; }
        public int FileId { get; set; }

        [Required(ErrorMessage = "Please select a document type")]
        public string FileName { get; set; }

        public EgendaFile EgendaFile { get; set; }

        public bool IsAddAnother { get; set; } 
    }
}

Dependency Injection - Static Collection - Unclear of best practice

$
0
0

Hi all, I am new to working with .Net Core so please be gentle if my question is too simple. I have been tasked with rewriting an existing API service that contains 'x' number of predefined 'Jobs'  that can exist in one or more assemblies that make up the solution. 

In the current solution the list of available jobs is hard coded in a static class that can then be accessed from anywhere it is needed.

The requirement as part of my rewrite is to be able to generate the list of jobs dynamically by scanning the loaded assemblies and finding all 'Job' that derive from a specific Interface. Getting the list of jobs is not a problem. My problem is where best to put this functionality and register it in a .Net Core project.

I know I will be needing to use the Startup class to perhaps register a 'Singleton' class that contains this logic?

My basic understanding of the DI is that you register the Interface and the implementation type that it relates to. Now assuming I have the following example code;

class JobSingletonService
{
    private static IEnumerable<Type> jobs;

    private static readonly JobSingletonService _jobSingletonServiceInstance = new JobSingletonService();

    private JobSingletonService()
    {
          jobs = AppDomain.CurrentDomain.GetAssemblies()
                          .SelectMany(s => s.GetTypes())
                          .Where(p => typeof(IScheduledJob)
                          .IsAssignableFrom(p) && !p.IsInterface).ToList();

    }

    public static JobSingletonService GetInstance() => _jobSingletonServiceInstance;

    public IEnumerable<Type> GetJobs() => jobs;
}

I obviously only want to get a list of the available types once and as the app starts up BUT of the course I need somehow to make sure that all of the assemblies have actually loaded BEFORE executing this query?

So should I extract an Interface from this and register it for DI as a singleton?

Am I over thinking this? Do I just need to create a static class instead of a service?

Any assistance will be greatly appreciated, many thanks.

Help needed in building

$
0
0

Hello,

I would to build the asp.net core solution from command line. for the .net framework, i use the below code which is in .bat file

@Echo OFF
Echo "Building solution/project file using batch file"
SET PATH=C:\Windows\Microsoft.NET\Framework\v4.0.30319\
SET SolutionPath=D:\Test\SampleTestBuild.sln
Echo Start Time - %Time%
MSbuild %SolutionPath% /p:Configuration=Debug /p:Platform="Any CPU"
Echo End Time - %Time%
Set /p Wait=Build Process Completed...

Like this, i would need to create one for building/Compiling the .net core solution from command line. please share me the sample code. 

list of values in searching criteria to be used in .net core

$
0
0

var subj = _context.Subjects 

                .Where(s =>SemetserId == ?)

                .ToList();

? is a list of semesterids to compare with. How to use such a searching criteria?

Issues with executing CRUD stored proedure using ExecuteSqlRawAsync in entity core framework

$
0
0

Hi,

I am trying to execute a CRUD stored procedure from entity core framework. This is how my code is:

int result =await _dbContext.Database.ExecuteSqlRawAsync(@"EXEC myschema.myProc @P1, @P2, @P3, @P4 ", sqlParams) where sqlparams is an Object[] of parameter values.

I am not getting either any reponse or error while executing this. Could anyone tell me if I am missing something or this code is incorrect.

Thanks in Advance,

Simpy Sinha

How to resize image before upload to varbinary column?

$
0
0

Hi

I'm uploading an image to a varbinary column in the database successfully. But I want to resize it before uploading.

So this is what I tried:

Guests model:

public byte[] Image { get; set; }

public string ContentType { get; set; }

ImageExtentions Class to resize the image:

using System;
using System.Collections.Generic;
using System.Drawing;
using System.Drawing.Drawing2D;
using System.IO;
using System.Linq;
using System.Threading.Tasks;

namespace System.Drawing
{
    public static class ImageExtentions
    {
        public static Image Resize(this Image current, int maxWidth, int maxHeight)
        {
            int width, height;

            if (current.Width > current.Height)
            {
                width = maxWidth;
                height = Convert.ToInt32(current.Height * maxHeight / (double)current.Width);
            }
            else
            {
                width = Convert.ToInt32(current.Width * maxWidth / (double)current.Height);
                height = maxHeight;
            }

            var canvas = new Bitmap(width, height);

            using (var graphics = Graphics.FromImage(canvas))
            {
                graphics.CompositingQuality = CompositingQuality.HighSpeed;
                graphics.InterpolationMode = InterpolationMode.HighQualityBicubic;
                graphics.CompositingMode = CompositingMode.SourceCopy;
                graphics.DrawImage(current, 0, 0, width, height);
            }

            return canvas;
        }

        public static byte[] ToByteArray(this Image current)
        {
            using (var stream = new MemoryStream())
            {
                current.Save(stream, current.RawFormat);
                return stream.ToArray();
            }
        }
    }
}

GuestsController:

//using a lot
using System.Drawing;
namespace Proj.Controllers
{
public class GuestsController : Controller
{
private readonly ApplicationDbContext _context; public GuestsController(ApplicationDbContext context) { _context = context; } //Some code [HttpPost] [ValidateAntiForgeryToken] public async Task<IActionResult> Create([Bind("Id,Name,DoB")] Guests guest, List<IFormFile> Image) { IFormFile uploadedImage = Image.FirstOrDefault(); if (ModelState.IsValid) { foreach (var item in Image) { if (item.Length > 0) { using (var stream = new MemoryStream()) { using (Image img = Image.FromStream(uploadedImage.OpenReadStream())) { Stream ms = new MemoryStream(img.Resize(900, 1000).ToByteArray()); FileStreamResult fsr = new FileStreamResult(ms, "image/jpg"); uploadedImage.OpenReadStream().CopyTo(stream); guest.Image = stream.ToArray(); guest.ContentType = uploadedImage.ContentType; } } } } } _context.Add(guest); await _context.SaveChangesAsync();
}

But this scenario gives me this error:

List<IFormFile> does not contain a definition for 'FromStream' and no accessible extension method  'FromStream' accepting a first argument of type List<IFormFile> could be found.

How to perform this task please?


How to access usb device using ASP.NET core

$
0
0

I created a desktop app that control usb device now i want to convert the app to a webapp but the problem is the ASP.net core doesn't detect the usb device i tried many solutions but the same result the usb device and website are all in my pc i tried other technologies like node js and python django it worked fine on those but i want to do it in asp.net core any other solutions thanks in advance

Change Connection String whilst App is running

$
0
0

Hi all,

I have a requirement to select different databases from a drop down list in an app which would then populate the active database connection string. Is this possible in Asp Core? If so does anyone have any suggestions how I might achieve this?

I have thought about writing the updated conn string to a "dynamic" appsettings file but I think I would need to restart the app for this to be read.

Thanks,

Jus

How to pass the model data to Partial View in .NET Core

$
0
0

Hi All,

I have partial view in main Index.cshtml, How to pass model to Partial view using ASP.NET core 3.0 mvc

Many Thanks,

Shabbir

Core 3, Hangfire & DI

$
0
0

Hi all, I have built most of my scheduling and automation app using Core 3 & Hangfire to handle the scheduling of specific tasks that can be run at specified intervals. Now this is working exactly as I need so long as each 'Job' service has a parameter-less constructor. Of course I am currently using the builtin DI that core provides and all is good with the world BUT I have what should be a pretty straight forward issue to resolve related to DI.

My 'Job' can be scheduled and if need to be also instantiated on request elsewhere in code (thinking of an email service for example) Now if I have a job that has a dependency that needs to be resolved at runtime I have 2 choices;

  1. I can keep my parameter-less constructor and simply instantiate whatever other dependencies I need in that same constructor. The problem with this is that it then makes DI pretty pointless if I have to manually create dependencies regardless of where in the app it gets used.
  2. The second option, and the one I am struggling with, is to configure a custom JobActivator for Hangfire that references the Container and can then resolved required dependencies. I have tried to do this but following an example but I get an error saying that ".Resolve' is not a valid method of Container.

This is the code that I am trying to use;

    public class HangfireJobActivator : JobActivator
    {
        private IContainer _container;

        public HangfireJobActivator(IContainer container)
        {
            _container = container;
        }

        public override object ActivateJob(Type type)
        {
            return _container.Resolve(type);
        }
    }

The bold, underscore text above is where my problem is. Is this something that existed in earlier version that has since been removed?

I would like to be able to get this working with the built in DI container BEFORE I start looking at other third party tools so can anybody guide me to where I am going wrong?

This is using Core 3.1 & Hangfire 1.7.10. Any help greatly appreciated as I am fairly new to Dot Net Core but I am enjoying it immensely so far!

RenderSection Scripts aspnet core

$
0
0

Hello I`m new in asp net core, I`m comming from aspnet framework 

Today I create a new project aspnet core for study and I saw that Visual Studio create a structure with a folder named "pages>Shared>_Layout.cshtml", as aspnet framework I understand this layout is a comum html to my pages. 

when I opened this file I can see a line with code "@RenderSection("Scripts", required: false)"

in aspnet Framework this "Scripts" is a bundle script file that is create on bundle.cs but in aspnet core I couldn`t find this "Scripts" where it is ? how can I add new *.js files in it? 

Viewing all 9386 articles
Browse latest View live


<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>