Code:
/ WCF / WCF / 3.5.30729.1 / untmp / Orcas / SP / ndp / cdf / src / NetFx35 / System.ServiceModel.Web / System / ServiceModel / Dispatcher / ContentTypeSettingDispatchMessageFormatter.cs / 1 / ContentTypeSettingDispatchMessageFormatter.cs
//------------------------------------------------------------------------------
// Copyright (c) Microsoft Corporation. All rights reserved.
//-----------------------------------------------------------------------------
namespace System.ServiceModel.Dispatcher
{
using System.Collections;
using System.ServiceModel.Channels;
using System.ServiceModel;
using System.ServiceModel.Description;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Reflection;
using System.Xml;
using System.ServiceModel.Diagnostics;
using System.Net;
using System.ServiceModel.Web;
class ContentTypeSettingDispatchMessageFormatter : IDispatchMessageFormatter
{
IDispatchMessageFormatter innerFormatter;
string outgoingContentType;
public ContentTypeSettingDispatchMessageFormatter(string outgoingContentType, IDispatchMessageFormatter innerFormatter)
{
if (outgoingContentType == null)
{
throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull("outgoingContentType");
}
if (innerFormatter == null)
{
throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull("innerFormatter");
}
this.outgoingContentType = outgoingContentType;
this.innerFormatter = innerFormatter;
}
public void DeserializeRequest(Message message, object[] parameters)
{
this.innerFormatter.DeserializeRequest(message, parameters);
}
public Message SerializeReply(MessageVersion messageVersion, object[] parameters, object result)
{
Message message = this.innerFormatter.SerializeReply(messageVersion, parameters, result);
if (message != null)
{
AddResponseContentTypeProperty(message, this.outgoingContentType);
}
return message;
}
static void AddResponseContentTypeProperty(Message message, string contentType)
{
if (message == null)
{
throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull("message");
}
if (contentType == null)
{
throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull("contentType");
}
if (OperationContext.Current != null && OperationContext.Current.HasOutgoingMessageProperties)
{
if (string.IsNullOrEmpty(WebOperationContext.Current.OutgoingResponse.ContentType))
{
WebOperationContext.Current.OutgoingResponse.ContentType = contentType;
}
}
else
{
object prop;
message.Properties.TryGetValue(HttpResponseMessageProperty.Name, out prop);
HttpResponseMessageProperty httpProperty;
if (prop != null)
{
httpProperty = (HttpResponseMessageProperty) prop;
}
else
{
httpProperty = new HttpResponseMessageProperty();
message.Properties.Add(HttpResponseMessageProperty.Name, httpProperty);
}
if (string.IsNullOrEmpty(httpProperty.Headers[HttpResponseHeader.ContentType]))
{
httpProperty.Headers[HttpResponseHeader.ContentType] = contentType;
}
}
}
}
}
// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
// Copyright (c) Microsoft Corporation. All rights reserved.
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- FrameSecurityDescriptor.cs
- CachedTypeface.cs
- IPipelineRuntime.cs
- HttpWriter.cs
- ResolveDuplexCD1AsyncResult.cs
- ServiceHttpModule.cs
- Html32TextWriter.cs
- CurrencyWrapper.cs
- DesigntimeLicenseContext.cs
- ConfigXmlDocument.cs
- RelationshipManager.cs
- IdentityNotMappedException.cs
- StatusStrip.cs
- SerialPinChanges.cs
- DataListCommandEventArgs.cs
- CompModSwitches.cs
- WebPartEditorOkVerb.cs
- MailAddressCollection.cs
- XmlSchemaComplexContentRestriction.cs
- Int32KeyFrameCollection.cs
- PaginationProgressEventArgs.cs
- MessageEncoderFactory.cs
- ProcessInputEventArgs.cs
- DataGridViewSelectedColumnCollection.cs
- HTMLTextWriter.cs
- MarkupCompilePass2.cs
- VisualBrush.cs
- SqlUtils.cs
- OdbcEnvironmentHandle.cs
- MemoryRecordBuffer.cs
- TrackingMemoryStreamFactory.cs
- PackWebResponse.cs
- RegexRunnerFactory.cs
- CachedPathData.cs
- StreamResourceInfo.cs
- FamilyCollection.cs
- CopyCodeAction.cs
- TimersDescriptionAttribute.cs
- SqlUdtInfo.cs
- XmlSchemaComplexType.cs
- ResXResourceSet.cs
- DataGridViewRowEventArgs.cs
- MemberNameValidator.cs
- SmtpTransport.cs
- SynchronizationLockException.cs
- UserNameSecurityTokenProvider.cs
- Errors.cs
- BinaryParser.cs
- Animatable.cs
- LocatorPartList.cs
- PageCatalogPartDesigner.cs
- PropertyEmitterBase.cs
- MouseActionConverter.cs
- MemberDescriptor.cs
- AddToCollection.cs
- UnsafeNativeMethods.cs
- TextDecoration.cs
- ErrorProvider.cs
- MailAddressCollection.cs
- InternalsVisibleToAttribute.cs
- SiteMap.cs
- RoleService.cs
- ListBoxItemAutomationPeer.cs
- DataBindingCollection.cs
- WindowClosedEventArgs.cs
- WhitespaceRuleLookup.cs
- XmlLinkedNode.cs
- Pointer.cs
- ExtenderHelpers.cs
- ColorContext.cs
- HtmlInputHidden.cs
- HostedTcpTransportManager.cs
- BackgroundWorker.cs
- WebFaultClientMessageInspector.cs
- JsonObjectDataContract.cs
- ProfilePropertySettingsCollection.cs
- CompensationHandlingFilter.cs
- InvokeMethod.cs
- CodeDOMUtility.cs
- IisTraceWebEventProvider.cs
- EntityProviderServices.cs
- XXXInfos.cs
- ExtenderControl.cs
- StylusTip.cs
- EventRoute.cs
- ClrProviderManifest.cs
- UnmanagedMarshal.cs
- LongAverageAggregationOperator.cs
- FocusChangedEventArgs.cs
- MimeMapping.cs
- ClientBuildManagerCallback.cs
- TemplateEditingVerb.cs
- BinaryExpressionHelper.cs
- ConfigXmlComment.cs
- ReferenceConverter.cs
- EmissiveMaterial.cs
- DebugController.cs
- DataSourceCache.cs
- StandardOleMarshalObject.cs
- MSHTMLHost.cs