C# 生成帮助页webapi2时出错
我在尝试使用MVC5 web api2生成帮助页面时出错,我知道在生成项目时它会为您生成此帮助页面,但是我现在在尝试单击链接时出错 System.StackOverflowException未处理 错误发生在这一行C# 生成帮助页webapi2时出错,c#,asp.net-web-api2,asp.net-web-api-helppages,C#,Asp.net Web Api2,Asp.net Web Api Helppages,我在尝试使用MVC5 web api2生成帮助页面时出错,我知道在生成项目时它会为您生成此帮助页面,但是我现在在尝试单击链接时出错 System.StackOverflowException未处理 错误发生在这一行formatter.WriteToStreamAsync(类型、值、毫秒、内容、null).Wait() 这就是它发生的代码 [SuppressMessage("Microsoft.Design", "CA1031:DoNotCatchGeneralExceptionTypes",
formatter.WriteToStreamAsync(类型、值、毫秒、内容、null).Wait()代码>
这就是它发生的代码
[SuppressMessage("Microsoft.Design", "CA1031:DoNotCatchGeneralExceptionTypes", Justification = "The exception is recorded as InvalidSample.")]
public virtual object WriteSampleObjectUsingFormatter(MediaTypeFormatter formatter, object value, Type type, MediaTypeHeaderValue mediaType)
{
if (formatter == null)
{
throw new ArgumentNullException("formatter");
}
if (mediaType == null)
{
throw new ArgumentNullException("mediaType");
}
object sample = String.Empty;
MemoryStream ms = null;
HttpContent content = null;
try
{
if (formatter.CanWriteType(type))
{
ms = new MemoryStream();
content = new ObjectContent(type, value, formatter, mediaType);
formatter.WriteToStreamAsync(type, value, ms, content, null).Wait();
ms.Position = 0;
StreamReader reader = new StreamReader(ms);
string serializedSampleString = reader.ReadToEnd();
if (mediaType.MediaType.ToUpperInvariant().Contains("XML"))
{
serializedSampleString = TryFormatXml(serializedSampleString);
}
else if (mediaType.MediaType.ToUpperInvariant().Contains("JSON"))
{
serializedSampleString = TryFormatJson(serializedSampleString);
}
sample = new TextSample(serializedSampleString);
}
else
{
sample = new InvalidSample(String.Format(
CultureInfo.CurrentCulture,
"Failed to generate the sample for media type '{0}'. Cannot use formatter '{1}' to write type '{2}'.",
mediaType,
formatter.GetType().Name,
type.Name));
}
}
catch (Exception e)
{
sample = new InvalidSample(String.Format(
CultureInfo.CurrentCulture,
"An exception has occurred while using the formatter '{0}' to generate sample for media type '{1}'. Exception message: {2}",
formatter.GetType().Name,
mediaType.MediaType,
UnwrapException(e).Message));
}
finally
{
if (ms != null)
{
ms.Dispose();
}
if (content != null)
{
content.Dispose();
}
}
return sample;
}
我在一个WebAPI项目上得到了完全相同的行为,特别是在一个接收对象作为输入参数的方法上。例如:
public IHttpActionResult Post(Person person)
在我在另一个不相关的命名空间上添加了一个同名(Person)的类后,错误开始出现,因此通过引用具有完全限定命名空间的参数,错误消失了:
public IHttpActionResult Post(MyProject.Models.Person person)
希望这能帮助到别人。我在一个web api项目上得到了完全相同的行为,特别是在一个接收对象作为输入参数的方法上。例如:
public IHttpActionResult Post(Person person)
在我在另一个不相关的命名空间上添加了一个同名(Person)的类后,错误开始出现,因此通过引用具有完全限定命名空间的参数,错误消失了:
public IHttpActionResult Post(MyProject.Models.Person person)
希望这能帮助别人