将断行符添加到HTTPresponseMessage Web API C#

Bob*_*tal 2 c# asp.net-web-api

我将首先开始说,在学习C#时请耐心等待,我会尽力做到具体。

我们在家里使用第三方即时通讯工具。他们增加了在信使中执行斜线命令以获取某些信息的功能。他们唯一的开箱即用选项是“ / weather”,为您提供该邮政编码的当前天气。

我想在内部使用它来向我的用户提供包含在我们的SQL Server中的信息。我的概念证明项目是使用/ discounts拉动积极折扣,您可以从输出中键入/ disocunts以列出该折扣中可用的商品。

我在Visual Studio中创建了Web API,并且在大多数情况下可以按照自己的意愿进行工作。我需要添加一些错误报告,但除此之外,它的效果还不错。我最大的问题是用户看到的输出。

目前,使用我的webAPI时,我正在将该格式重新输入到Messenger中:

[“ 8-VAPE液体-2折为$ 2.00”,“ 11-草莓味1”,“ 15-高级雪茄折扣-捆绑包,” 16-高级雪茄折扣“]

我希望他们至少在每个“,”处换行,理想情况下,输出为:

“ 8-VAPE液体-2售价$ 2.00”

“ 11-WILDBERRY INCENSE 1”

“ 15-高级雪茄折扣-捆绑包”

“ 16-高级雪茄折扣”

这是我的API Contoller中的代码。

public class DiscountsController : ApiController
{
    private DiscountsEntities db = new DiscountsEntities();

    [HttpPost]
    public HttpResponseMessage Authenticate(FormDataCollection form)
    {
        var message = form.Get("Message");

        if (message == "/discounts" )
        {

           var ReturnedDiscounts = from d in db.Discounts
                                    where d.DiscountStartDate < DateTime.Now && d.DiscountStopDate >= DateTime.Now
                                    orderby d.DiscountPriority ascending
                                    select string.Concat(d.DiscountPriority, " - ", d.DiscountName);

            HttpResponseMessage response = Request.CreateResponse(HttpStatusCode.OK,ReturnedDiscounts);
            response.Content.Headers.ContentType = new MediaTypeHeaderValue("text/plain");


            return response;
Run Code Online (Sandbox Code Playgroud)

任何帮助或协助将不胜感激。

Mic*_*xon 5

您不必在消息中返回对象。您可以只返回一个字符串。

var strResponse = string.Join("\n", ReturnedDiscounts);

HttpResponseMessage response = Request.CreateResponse(HttpStatusCode.OK, strResponse);
response.Content.Headers.ContentType = new MediaTypeHeaderValue("text/plain");

return response;
Run Code Online (Sandbox Code Playgroud)

编辑:

如果您使用的是WebAPI 2,则可以执行此操作以确保它也没有引号-这可能是更可取的

var strResponse = string.Join("\n", ReturnedDiscounts);

return Content(strResponse);
Run Code Online (Sandbox Code Playgroud)

如果那不起作用,您也可以...

return new HttpResponseMessage()
{
    Content = new StringContent(strResponse, Encoding.UTF8, "text/html")
};
Run Code Online (Sandbox Code Playgroud)