2016-06-17 3 views
1

MVC5 웹 api2를 사용하여 도움말 페이지를 생성 할 때 오류가 발생합니다. 프로젝트를 생성 할 때 생성되지만, 클릭 할 때 오류가 발생합니다. 링크도움말 페이지를 생성 할 때 오류가 발생했습니다.

System.StackOverflowException는 처리되지 않은

오류이 줄 formatter.WriteToStreamAsync(type, value, ms, content, 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; 
    } 

답변

0

웹 API 프로젝트에서 특히 입력 매개 변수로 객체를받은 메소드에서 정확히 동일한 동작을 얻었습니다. 예를 들면 :

public IHttpActionResult Post(Person person) 

오류가 나는 다른 관련이없는 공간에서 같은 이름 (사람)와 클래스를 추가 한 후 보여주는 시작, 그래서 오류가 정규화 된 네임 스페이스 매개 변수를 참조하여 사라 :

public IHttpActionResult Post(MyProject.Models.Person person) 

누군가가 도움이되기를 바랍니다.