Base solution for your next web application
Starts in:
01 DAYS
01 HRS
01 MIN
01 SEC

Activities of "oguzhanagir"

Answer

Hi

  • Nginx cannot proxy WebSocket connections by default. For this, you need to configure your Nginx to act as a WebSocket proxy.
server {
    location /signalr {
        proxy_pass https://localhost:44302;  # or https://localhost:443021;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
        proxy_set_header Host $host;
        proxy_cache_bypass $http_upgrade;
    }
}

Related document

Related document


  • If you are using a load balancer in the background, you may need to enable sticky sessions in a stateful application such as SignalR. The load balancer must redirect to the same server throughout the session.

  • The error message warns that ServerSentEvents and LongPolling are disabled. If WebSockets is not supported, SignalR automatically switches to other transport methods. You can enable these if you want.
const connection = new signalR.HubConnectionBuilder()
    .withUrl("/your-hub-endpoint", {
        transport: signalR.HttpTransportType.WebSockets | signalR.HttpTransportType.ServerSentEvents | signalR.HttpTransportType.LongPolling
    })
    .build();

These steps may help you resolve your error. If these do not solve your problem, you can give us details.

Hi pliaspzero

We recommend that you update these packages according to your .NET version. If it is .NET 8, you can update it to the latest versions 8.x and 4.8.x. You can check Microsoft's documentation for changes in version transitions.

Document

Document

Hi pliaspzero

Is your project a merged Angular application?

Hi mihalicz

Could you upgrade your Visual Studio version to the latest? If you have the latest version of Visual Studio please try to upgrade the ABP packages of your project.

Answer

Hi Bernard

To fix this, adjust your usage of abp.ui.setBusy() so that it's correctly started and stopped

function save(successCallback) {
    debugger;

    if (!_$questionnaireInformationForm.valid()) {
        return;
    }

    var oldJson = _$questionnaireInformationForm.serializeFormToObject();
    console.log(JSON.stringify(oldJson, null, 4));

    function convertJsonToArray(oldJson) {
        var newJson = {
            "Questions": [],
            "intitule": oldJson.intitule,
            "descriptif": oldJson.descriptif,
            "dateDebut": oldJson.dateDebut,
            "dateFin": oldJson.dateFin,
            "id": oldJson.id
        };

        $.each(oldJson.Questions, function (index, questionData) {
            if (index.includes("Text")) {
                var questionIndex = index.split(".")[0];
                var question = {
                    "Text": questionData,
                    "Type": oldJson.Questions[questionIndex + ".Type"],
                    "Answers": []
                };

                debugger;

                $.each(oldJson.Questions[questionIndex + ".Answers"], function (answerKey, answerValue) {
                    if (answerKey.includes("Text")) {
                        question.Answers.push({ "Text": answerValue });
                    }
                });

                newJson.Questions.push(question);
            }
        });

        return newJson;
    }

    var newJson = convertJsonToArray(oldJson);
    console.log(JSON.stringify(newJson, null, 4));

    abp.ui.setBusy(); // Start loader

    _questionnairesService
        .createOrEditSurvey(newJson)
        .done(function () {
            abp.notify.info(app.localize('SavedSuccessfully'));
            abp.event.trigger('app.createOrEditQuestionnaireModalSaved');
            if (typeof successCallback === "function") {
                successCallback(); // Callback if provided
            }
        })
        .always(function () {
            abp.ui.clearBusy(); // Stop loader
        });
};
  • You start the loader with abp.ui.setBusy() before the request.
  • You stop the loader with abp.ui.clearBusy() in the .always() method after the request completes, regardless of whether it was successful or not.

Hi

In which browser are you experiencing this issue? Can you share the console and error output with us? Did you use the "yarn create-bundles" command when making changes to the bundle files?

Hi pliaspzero

Here, you can create an event that will be triggered when the new version notification reaches the user, so it makes sense to create a Clear method. However, if you only want to reload CSS and Javascript files, it would be more logical to use only the "cache" parameter. This is up to you depending on your scenario. In the event received function, you can call the Clear method when the notification with the NotificationName NewVersionAvailable arrives.

_Header.js

abp.event.on('abp.notifications.received', function (userNotification) {
  _appUserNotificationHelper.show(userNotification);
  loadNotifications();
  //In this section you can call the Clear method
});

Hi pliaspzero

You must have "Pages.Administration.NewVersion.Create" permission. Related section

Hi pliaspzero

When the Send New Version Notification button is pressed, when other users log in, they are greeted with a modal as shown in the screenshot. It will not close unless you click either Cancel or Yes.

Hi pliaspzero

"Send New Release Notification" button in Maintenance will reload CSS and Javascript files along with sending notifications to users.

Showing 51 to 60 of 166 entries