使用参数从 Web API 控制器获取 SSMS 中的数据

Get data in SSMS from Web API Controller with parameters

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

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

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

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

查询: Click here to view

在共享数据属性 - 参数中:添加一个参数(例如数据类型为文本的“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
        }
    }