首页 > 解决方案 > 使用参数从 Web API 控制器获取 SSMS 中的数据

问题描述

就我而言,我需要从 Web api 控制器(使用 XML 数据)获取 SSMS 中的数据。此外,需要从 SSMS 向控制器发送一些参数。

标签: controllerssmsasp.net-core-webapi

解决方案


在 SSMS 中:用于从“共享数据源属性”中使用的控制器获取数据 - 类型:XML,

连接字符串:https://siteAdress/api/ControllerName/MethodName

在共享数据属性 - 数据源:使用上一步中的数据源,查询类型:文本,

查询: 点此查看

在共享数据属性 - 参数中:添加一个参数(例如“pUserLodin”,数据类型为 - 文本,无默认值)。

在报表数据 - 数据集属性 - 查询中:使用上一步中的共享数据集,

在报告数据 - 数据集属性 - 参数:初始参数“pUserLodin”中,在我的情况下,我设置了值“=mid(User!UserID, InStr(User!UserID,"")+1)”。

在 Web API 控制器中(在您可以使用代码的方法中,它可以显示如何获取和发送数据):

    [HttpPost]
    [HttpGet]
    [ReadableBodyStream]
    [AllowAnonymous]
    public ActionResult MethodName()
    {
        string body = string.Empty;
        string userLogin = string.Empty;

        HttpContext.Request.Body.Seek(0, SeekOrigin.Begin);

        using (StreamReader stream = new StreamReader(HttpContext.Request.Body))
        {
            body = stream.ReadToEndAsync().Result;
        }

        if (body != string.Empty)
        {
            userLogin = body.Split('=')[1];
        }

        if (userLogin == string.Empty)
        {
            return GetDefaultData(); // For Shared Dataset only. 
        }

        string stringData = string.Empty;
        var xmlserializer = new XmlSerializer(typeof(List<MyType>));
        var stringWriter = new Utf8StringWriter();
        using (var writer = XmlWriter.Create(stringWriter))
        {
            xmlserializer.Serialize(writer, orgUnits);
            stringData = stringWriter.ToString();
        }

        return Content(stringData, "text/xml", Encoding.UTF8);
    }

    public class ReadableBodyStreamAttribute : AuthorizeAttribute, IAuthorizationFilter
    {
        public void OnAuthorization(AuthorizationFilterContext context)
        {
            // context.HttpContext.Request.EnableRewind(); // For ASP.NET 2.1
            context.HttpContext.Request.EnableBuffering(); // For ASP.NET 3.1
        }
    }

推荐阅读