使用参数从 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
}
}
就我而言,我需要从 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
}
}