我有一个带有Web API 2控制器的Web项目,我向它添加了Swashbuckle nuget包。当我访问swagger UI时,它会正确显示我的控制器操作。
Web API控制器示例:
public class StatusEventController: ApiController
{
[HttpPost]
[ApiKeyAuthentication]
[Route("api/v1/statusevent/reportstatus/{locale}")]
public ReportStatusResponse ReportStatus(string locale, [FromBody]StatusType status)
{
ReportStatusResponse response = new ReportStatusResponse();
try
{
// Business logic here...
response.Success = true;
}
catch (Exception ex)
{
Status.ResponseMessage message = new Status.ResponseMessage();
message.Code = "EX";
message.Message = ex.Message;
response.Messages.Add(message);
}
return response;
}
}
我的一些控制器方法使用在另一个(包含)库中定义的参数,并且这些类型 all 显示为数据类型" string"。正确显示Web项目本身中定义的类型参数。 Web API中使用的所有类型都是简单的POCO对象。
POCO:s看起来像这样:
[System.CodeDom.Compiler.GeneratedCodeAttribute("System.Xml", "2.0.50727.1433")]
[System.SerializableAttribute()]
[System.Diagnostics.DebuggerStepThroughAttribute()]
[System.ComponentModel.DesignerCategoryAttribute("code")]
[System.Xml.Serialization.XmlTypeAttribute(Namespace="http://services.info/status/Status", TypeName="ReportStatusResponse")]
[System.ComponentModel.TypeConverterAttribute(typeof(System.ComponentModel.ExpandableObjectConverter))]
public partial class ReportStatusResponse
{
protected bool m_Success = false;
protected List<ResponseMessage> m_Messages = new List<ResponseMessage>();
public bool Success
{
get { return m_Success; }
set { m_Success = value; }
}
public List<ResponseMessage> Messages
{
get { return m_Messages; }
}
}
我使用Web API项目和外部库创建了一个测试项目,并且该项目按预期工作,因此我无法在项目之外重现该问题。
如何解决/解决此问题?