C# 从.NET Web API返回Cookie和对象

C# 从.NET Web API返回Cookie和对象,c#,cookies,asp.net-web-api,asp.net-web-api2,httpcookie,C#,Cookies,Asp.net Web Api,Asp.net Web Api2,Httpcookie,我正在使用.NETWebAPI,我希望发送新创建的cookie以及在WebAPI中生成的字符串 C#代码: 公共元组CookieMessage() { string result=“Cookie创建成功!”; CookieHeaderValue服务器cookie=新的CookieHeaderValue(“,”); serverCookie=新CookieHeaderValue (“IEM”、“成功”); serverCookie.Expires=DateTimeOffset.Now.AddMin

我正在使用.NETWebAPI,我希望发送新创建的cookie以及在WebAPI中生成的字符串

C#代码:

公共元组CookieMessage()
{
string result=“Cookie创建成功!”;
CookieHeaderValue服务器cookie=新的CookieHeaderValue(“,”);
serverCookie=新CookieHeaderValue
(“IEM”、“成功”);
serverCookie.Expires=DateTimeOffset.Now.AddMinutes(15);
serverCookie.Domain=Request.RequestUri.Host;
serverCookie.Path=“/”;
HttpResponseMessage response=Request.CreateResponse(HttpStatusCode.OK);
AddCookies(新的CookieHeaderValue[]{serverCookie});
返回Tuple.Create(响应、结果);
}
如何将响应“Cookie Created Successfully!”与Cookie
服务器Cookie

请帮助我如何发送这两个在一个单一的回应客户。我收到500内部服务器错误

我在回复中看到了以下信息

{“消息”:“发生了错误”。,“异常消息”:“错误” 'ObjectContent'1'类型未能序列化的响应正文 内容类型'application/json; 字符集=utf-8.,“异常类型”:“System.InvalidOperationException” ,“StackTrace”:null,“InnerException”:{“Message”:“出现错误” 发生。“,“ExceptionMessage”:“从中获取值时出错” 上的“分隔符数组” “System.Version.”,“ExceptionType”:“Newtonsoft.Json.JsonSerializationException” ,“StackTrace”:“在 Newtonsoft.Json.Serialization.DynamicValueProvider.GetValue(对象 目标)\r\n位于 Newtonsoft.Json.Serialization.JsonSerializerInternalWriter.CalculatePropertyValues(JsonWriter 编写器,对象值,JsonContainerContract,JsonProperty 成员、JsonProperty属性、JsonContract和memberContract、对象& memberValue)\r\n位于 Newtonsoft.Json.Serialization.JsonSerializerInternalWriter .SerializeObject(JsonWriter编写器、对象值、JsonObjectContract 合同,JsonProperty成员,JsonContainerContract collectionContract,JsonProperty containerProperty)\r\n位于 Newtonsoft.Json.Serialization.JsonSerializerInternalWriter .SerializeValue(JsonWriter编写器、对象值、JsonContract valueContract,JsonProperty成员,JsonContainerContract containerContract,JsonProperty containerProperty)\r\n位于 Newtonsoft.Json.Serialization.JsonSerializerInternalWriter .SerializeObject(JsonWriter编写器、对象值、JsonObjectContract 合同,JsonProperty成员,JsonContainerContract collectionContract,JsonProperty containerProperty)\r\n位于 Newtonsoft.Json.Serialization.JsonSerializerInternalWriter .SerializeValue(JsonWriter编写器、对象值、JsonContract valueContract,JsonProperty成员,JsonContainerContract containerContract,JsonProperty containerProperty)\r\n位于 Newtonsoft.Json.Serialization.JsonSerializerInternalWriter .SerializeObject(JsonWriter编写器、对象值、JsonObjectContract 合同,JsonProperty成员,JsonContainerContract collectionContract,JsonProperty containerProperty)\r\n位于 Newtonsoft.Json.Serialization.JsonSerializerInternalWriter .SerializeValue(JsonWriter编写器、对象值、JsonContract valueContract,JsonProperty成员,JsonContainerContract containerContract,JsonProperty containerProperty)\r\n位于 Newtonsoft.Json.Serialization.JsonSerializerInternalWriter .Serialize(JsonWriter JsonWriter,对象值)\r\n在 Newtonsoft.Json.JsonSerializer.SerializeInternal(JsonWriter jsonWriter,对象值)\r\n位于 Newtonsoft.Json.JsonSerializer.Serialize(JsonWriter JsonWriter, 对象值)\r\n位于 System.Net.Http.Formatting.JsonMediaTypeFormatter.c_uuDisplayClassD。 b__c()\r\n在System.Threading.Tasks.TaskHelpers.RunSynchronously(操作, CancellationToken token)”,“InnerException”:{“Message”:“出现错误。” 发生。“,“ExceptionMessage”:“公共语言运行库检测到 无效的 程序“”,“例外类型”:“System.InvalidProgrameException”,“StackTrace”: 在GetSeparatorsArray(对象)\r\n在 Newtonsoft.Json.Serialization.DynamicValueProvider.GetValue(对象 目标“}}”


您正在返回不受支持的类型。我确信该框架将永远无法序列化
元组
。如果要修改响应头,只需返回
HttpResponseMessage

这应该如您所期望的那样起作用:

public HttpResponseMessage CookieMessage()
{
    var response = Request.CreateResponse<string>(
        HttpStatusCode.OK,
        "Cookie Created Successfully !"
    );

    var cookie = new CookieHeaderValue("IEM", "Success");
    cookie.Expires = DateTimeOffset.Now.AddMinutes(15);
    cookie.Domain = Request.RequestUri.Host;
    cookie.Path = "/";

    response.Headers.AddCookies(new CookieHeaderValue[] { cookie });

    return response;
}
public HttpResponseMessage CookieMessage()
{
var response=Request.CreateResponse(
HttpStatusCode.OK,
“已成功创建Cookie!”
);
var cookie=新CookieHeaderValue(“IEM”、“成功”);
cookie.Expires=DateTimeOffset.Now.AddMinutes(15);
cookie.Domain=Request.RequestUri.Host;
cookie.Path=“/”;
AddCookies(新的CookieHeaderValue[]{cookie});
返回响应;
}

您返回的是不受支持的类型。我确信该框架将永远无法序列化
元组
。如果要修改响应头,只需返回
HttpResponseMessage

这应该如您所期望的那样起作用:

public HttpResponseMessage CookieMessage()
{
    var response = Request.CreateResponse<string>(
        HttpStatusCode.OK,
        "Cookie Created Successfully !"
    );

    var cookie = new CookieHeaderValue("IEM", "Success");
    cookie.Expires = DateTimeOffset.Now.AddMinutes(15);
    cookie.Domain = Request.RequestUri.Host;
    cookie.Path = "/";

    response.Headers.AddCookies(new CookieHeaderValue[] { cookie });

    return response;
}
public HttpResponseMessage CookieMessage()
{
var response=Request.CreateResponse(
HttpStatusCode.OK,
“已成功创建Cookie!”
);
var cookie=新CookieHeaderValue(“IEM”、“成功”);
cookie.Expires=DateTimeOffset.Now.AddMinutes(15);
cookie.Domain=Request.RequestUri.Host;
cookie.Path=“/”;
AddCookies(新的CookieHeaderValue[]{cookie});
返回响应;
}

是否在调试器下运行它以查看引发了什么异常?@fahadash在Web API中,它返回时没有任何异常。我粘贴了回复。请检查一下。您是否在调试器下运行它以查看除了