Activities of "liangshiwei"

Hi,

I think there is no problem, you can use suite advanced tab to add navigation Property

Hi,

I can't build the solution

Hi,

You can try upgrading to the 8.3.x version; we fixed it.

you can check this document to know how to add a custom filter.

https://abp.io/docs/latest/framework/infrastructure/data-filtering

We will fix the problem.

https://github.com/abpframework/abp/issues/21443

you can try

add index.js to wwwroot/swagger/ui

/* Source: https://gist.github.com/lamberta/3768814
 * Parse a string function definition and return a function object. Does not use eval.
 * @param {string} str
 * @return {function}
 *
 * Example:
 *  var f = function (x, y) { return x * y; };
 *  var g = parseFunction(f.toString());
 *  g(33, 3); //=> 99
 */
function parseFunction(str) {
    if (!str) return void (0);

    var fn_body_idx = str.indexOf('{'),
        fn_body = str.substring(fn_body_idx + 1, str.lastIndexOf('}')),
        fn_declare = str.substring(0, fn_body_idx),
        fn_params = fn_declare.substring(fn_declare.indexOf('(') + 1, fn_declare.lastIndexOf(')')),
        args = fn_params.split(',');

    args.push(fn_body);

    function Fn() {
        return Function.apply(this, args);
    }

    Fn.prototype = Function.prototype;

    return new Fn();
}

window.onload = function () {
    var configObject = JSON.parse('{"urls":[{"url":"/swagger/v1/swagger.json","name":"Qa API"}],"deepLinking":false,"persistAuthorization":false,"displayOperationId":false,"defaultModelsExpandDepth":1,"defaultModelExpandDepth":1,"defaultModelRendering":"example","displayRequestDuration":false,"docExpansion":"list","showExtensions":false,"showCommonExtensions":false,"supportedSubmitMethods":["get","put","post","delete","options","head","patch","trace"],"tryItOutEnabled":false,"oidcSupportedFlows":["authorization_code"],"oidcSupportedScopes":["Qa"],"oidcDiscoveryEndpoint":"https://localhost:44303/.well-known/openid-configuration"}');
    var oauthConfigObject = JSON.parse('{"clientId":"Qa_Swagger","scopeSeparator":" ","scopes":[],"useBasicAuthenticationWithAccessCodeGrant":false,"usePkceWithAuthorizationCodeGrant":false}');

    // Workaround for https://github.com/swagger-api/swagger-ui/issues/5945
    configObject.urls.forEach(function (item) {
        if (item.url.startsWith("http") || item.url.startsWith("/")) return;
        item.url = window.location.href.replace("index.html", item.url).split('#')[0];
    });

    // If validatorUrl is not explicitly provided, disable the feature by setting to null
    if (!configObject.hasOwnProperty("validatorUrl"))
        configObject.validatorUrl = null

    // If oauth2RedirectUrl isn't specified, use the built-in default
    if (!configObject.hasOwnProperty("oauth2RedirectUrl"))
        configObject.oauth2RedirectUrl = (new URL("oauth2-redirect.html", window.location.href)).href;

    // Apply mandatory parameters
    configObject.dom_id = "#swagger-ui";
    configObject.presets = [SwaggerUIBundle.presets.apis, SwaggerUIStandalonePreset];
    configObject.layout = "StandaloneLayout";

    // Parse and add interceptor functions
    var interceptors = JSON.parse('{}');
    if (interceptors.RequestInterceptorFunction)
        configObject.requestInterceptor = parseFunction(interceptors.RequestInterceptorFunction);
    if (interceptors.ResponseInterceptorFunction)
        configObject.responseInterceptor = parseFunction(interceptors.ResponseInterceptorFunction);

    if (configObject.plugins) {
        configObject.plugins = configObject.plugins.map(eval);
    }

    // Begin Swagger UI call region

    const ui = abp.SwaggerUIBundle(configObject);

    ui.initOAuth(oauthConfigObject);

    // End Swagger UI call region

    window.ui = ui
}
app.UseSwagger();
var resolver = app.ApplicationServices.GetService<ISwaggerHtmlResolver>();

 app.UseSwaggerUI(options =>
{
    options.InjectJavascript("ui/abp.js");
    
    options.InjectJavascript("ui/abp.swagger.js");
    options.IndexStream = () => resolver?.Resolver();
    options.SwaggerEndpoint("/swagger/v1/swagger.json", "Qa API");

    var configuration = context.ServiceProvider.GetRequiredService<IConfiguration>();
    options.OAuthClientId(configuration["AuthServer:SwaggerClientId"]);
});

Yes,

Hi,

you can use event handler:

https://abp.io/docs/latest/framework/infrastructure/event-bus/local#pre-built-events https://abp.io/docs/latest/framework/infrastructure/event-bus/distributed#pre-defined-events

Try this

protected override void ApplyAbpConceptsForDeletedEntity(EntityEntry entry)
{
    if (!(entry.Entity is ISoftDelete))
    {
        return;
    }

    if (IsHardDeleted(entry))
    {
        return;
    }

    if (entry.CurrentValues.Properties.Any(x => x.Name == nameof(IHasExtraProperties.ExtraProperties)))
    {
        ExtraPropertyDictionary? originalExtraProperties = null;
        if (entry.Entity is IHasExtraProperties)
        {
            originalExtraProperties = entry.OriginalValues.GetValue<ExtraPropertyDictionary>(nameof(IHasExtraProperties.ExtraProperties));
        }

        ;

        if (entry.Entity is IHasExtraProperties)
        {
            ObjectHelper.TrySetProperty(entry.Entity.As<IHasExtraProperties>(), x => x.ExtraProperties, () => originalExtraProperties);
        }
    }
    
    entry.Reload()
    ObjectHelper.TrySetProperty(entry.Entity.As<ISoftDelete>(), x => x.IsDeleted, () => true);
    SetDeletionAuditProperties(entry);
}

if you published it locally, will it work?

HI,

You can try my steps

https://abp.io/support/questions/8278/SSO-login-like-external-provider?CurrentPage=2#answer-3a1668fe-ab22-9f7d-60d1-bece74fb536a

Showing 581 to 590 of 6692 entries
Learn More, Pay Less
33% OFF
All Trainings!
Get Your Deal
Mastering ABP Framework Book
The Official Guide
Mastering
ABP Framework
Learn More
Mastering ABP Framework Book
Made with ❤️ on ABP v10.0.0-preview. Updated on September 12, 2025, 10:20