gpt4 book ai didi

c# - WebAPI 在 IIS 中不返回 xml

转载 作者:行者123 更新时间:2023-11-30 16:11:04 24 4
gpt4 key购买 nike

我一直在努力解决这个问题以找到它的根源,但还没有运气。我的 WebAPI 在 IIS 中运行在它自己的应用程序池中,操作应该返回 XML 和 JSON,但它只返回 JSON。更奇怪的是,它在其他 PC 上运行良好,所以我猜测它一定是我的 IIS 出了问题,或者我缺少某种配置。如果我使用 Visual Studio Server 而不是 IIS,它工作得很好。

API 配置:

//Added to support .net1.1 clients
config.Formatters.XmlFormatter.UseXmlSerializer = true;
config.Formatters.JsonFormatter.UseDataContractJsonSerializer = true;
config.Formatters.Add(new FormUrlEncodedMediaTypeFormatter());

数据属性:

/// <summary>
/// Unique Transaction ID
/// </summary>
private int TransactionID;
[XmlElement(Type = typeof(int))]
public int fTransactionID
{
get{return TransactionID;}
set{TransactionID = value;}
}

请求 header

// Create a WebRequest to the remote site
WebRequest myWebClient = WebRequest.Create(uri);
myWebClient.ContentType = "application/xml";
myWebClient.Method = method;

编辑

API 方法

/// <summary>
/// Return Rebate Reversal Transactions
/// </summary>
/// <param name="FromDate"></param>
/// <param name="ToDate"></param>
/// <param name="PracticeID"></param>
/// <returns></returns>
[AttributeRouting.Web.Http.GET("RebateReversalTransaction/{FromDate}/{ToDate}/{PracticeID}")]
public GetRebateReversalTransactionResponse GetReversalTransaction(int FromDate, int ToDate, int PracticeID)
{
GetRebateReversalTransactionResponse reversalResponse = new GetRebateReversalTransactionResponse();
service = new PPNRebateSystemService();
reversalResponse = service.GetPracticeRebateReversalTransactions(FromDate, ToDate, PracticeID);

return reversalResponse;
}

最佳答案

Global.asax.cs 中,将以下代码添加到 Application_Start。这将清除所有可能已注册的格式化程序,然后添加回 XML 格式化程序。我已经对此进行了测试,即使客户端发送 JSON 接受 header (Accept: application/json),它也会以 XML 进行响应。

protected void Application_Start() 
{
...


GlobalConfiguration.Configuration.Formatters.Clear();
//Force XML responses on all requests
GlobalConfiguration.Configuration.Formatters.Add(new XmlMediaTypeFormatter());
//Force JSON responses on all requests
//GlobalConfiguration.Configuration.Formatters.Add(new JsonMediaTypeFormatter());

}

关于c# - WebAPI 在 IIS 中不返回 xml,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24798094/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com