2010-05-25 2 views
2

응답을 JSON 문자열로 출력하기 위해 REST 호출에 & 형식 = json이 포함 된 전역 옵션을 만들고 싶습니다. 내 방법에 다음 문자열을 입력하면WCF Global (.asax) 동작

그것은 작동 :

WebOperationContext.Current.OutgoingResponse.Format = WebMessageFormat.Json; 

을하지만, 난 아무데도 내 Global.asax 파일에서이 라인을 추가 할 경우, 나는 현재 상황에 대한 nullException 수 :

String format = ""; 

if (HttpContext.Current.Request.QueryString["format"] != null) 
    format = HttpContext.Current.Request.QueryString["format"]; 

if (String.Equals("json", format, StringComparison.OrdinalIgnoreCase)) 
    System.ServiceModel.Web.WebOperationContext.Current.OutgoingResponse.Format = System.ServiceModel.Web.WebMessageFormat.Json; 

예외는 여기 트리거 :

System.ServiceModel.Web.WebOperationContext.Current 

누구든지 내가이 기능을 추가 할 수있는 방법을 알고 전 세계적으로 (WCF)?

+0

이 항목을 반드시 Global.asax에 추가 할 필요는 없습니다. 난 그냥 글로벌해야하므로 모든 450 작업에 영향을 미칠 것입니다. –

답변

3

서비스 동작을 통해 WCF 처리 파이프 라인에 자신의 DispatchMessageInspector를 추가 할 수 있습니다. Here하는 방법입니다.

구성 파일을 통해 동작을 적용하려면 먼저 BehaviorExtensionElement에서 새 클래스를 파생시키고 멤버 BehaviorType 및 CreateBehavior를 재정의해야합니다. 그런 다음 (전체 유형 이름)과 유사한 설정 섹션

<system.serviceModel> 
    <extensions> 
     <behaviorExtensions> 
      <add name="myBehavior" type="SomeNamespace.MyBehaviorExtensionElement, AssemblyName, 
       Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" /> 
     </behaviorExtensions> 
    </extensions> 
</system.serviceModel> 

에 추가하고

<behaviors> 
    <behavior configurationName="myServiceBehavior"> 
     <myBehavior />    
    </behavior> 
</behaviors> 

마지막으로 서비스에이 구성을 적용합니다.

+0

나는 이것을 만들었지 만 그것의 존재를 무시하고있다. 어떤 아이디어? –

+1

동작이 제대로 서비스에 연결되지 않았을 수 있습니다. 당신이 그 일을 어떻게했는지 보여 줄 수 있고, 제가 도울 수있을 것이라고 생각합니다. –

+0

문제는 web.config에 추가하는 것 같아요. 추가 할 필요가있는 부분은 무엇입니까? –