Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- [ServiceContract]
- public interface IFileService
- {
- [OperationContract]
- [WebInvoke(Method = "GET",
- BodyStyle = WebMessageBodyStyle.Bare,
- ResponseFormat = WebMessageFormat.Json,
- UriTemplate = "/DownloadConfig")]
- Stream Download();
- }
- [AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Required)]
- public class GCConfigFileService : IGCConfigFileService
- {
- public Stream Download()
- {
- throw new Exception();
- }
- }
- <location path="FileService.svc">
- <system.web>
- <authorization>
- <allow users="*"/>
- </authorization>
- </system.web>
- </location>
- <system.serviceModel>
- <client />
- <behaviors>
- <serviceBehaviors>
- <behavior name="FileServiceBehavior">
- <serviceMetadata httpGetEnabled="true"/>
- <serviceDebug includeExceptionDetailInFaults="false" />
- </behavior>
- </serviceBehaviors>
- <endpointBehaviors>
- <behavior name="web">
- <webHttp/>
- </behavior>
- </endpointBehaviors>
- </behaviors>
- <serviceHostingEnvironment aspNetCompatibilityEnabled="true"
- multipleSiteBindingsEnabled="true" />
- <services>
- <service name="FileService"
- behaviorConfiguration="FileServiceBehavior">
- <endpoint address=""
- binding="webHttpBinding"
- bindingConfiguration="FileServiceBinding"
- behaviorConfiguration="web"
- contract="IFileService"></endpoint>
- </service>
- </services>
- <bindings>
- <webHttpBinding>
- <binding
- name="FileServiceBinding"
- maxBufferSize="2147483647"
- maxReceivedMessageSize="2147483647"
- transferMode="Streamed"
- openTimeout="04:01:00"
- receiveTimeout="04:10:00"
- sendTimeout="04:01:00">
- <readerQuotas maxDepth="2147483647"
- maxStringContentLength="2147483647"
- maxArrayLength="2147483647"
- maxBytesPerRead="2147483647"
- maxNameTableCharCount="2147483647" />
- </binding>
- </webHttpBinding>
- </bindings>
- throw new WebFaultException<string>("Custom Error Message!", HttpStatusCode.InternalServerError);
- class HttpErrorHandler : IErrorHandler
- {
- public bool HandleError(Exception error)
- {
- return false;
- }
- public void ProvideFault(Exception error, MessageVersion version, ref Message fault)
- {
- if (fault != null)
- {
- HttpResponseMessageProperty properties = new HttpResponseMessageProperty();
- properties.StatusCode = HttpStatusCode.InternalServerError;
- fault.Properties.Add(HttpResponseMessageProperty.Name, properties);
- }
- }
- }
- class ErrorBehaviorAttribute : Attribute, IServiceBehavior
- {
- Type errorHandlerType;
- public ErrorBehaviorAttribute(Type errorHandlerType)
- {
- this.errorHandlerType = errorHandlerType;
- }
- public void Validate(ServiceDescription description, ServiceHostBase serviceHostBase)
- {
- }
- public void AddBindingParameters(ServiceDescription description, ServiceHostBase serviceHostBase, Collection<ServiceEndpoint> endpoints, BindingParameterCollection parameters)
- {
- }
- public void ApplyDispatchBehavior(ServiceDescription description, ServiceHostBase serviceHostBase)
- {
- IErrorHandler errorHandler;
- errorHandler = (IErrorHandler)Activator.CreateInstance(errorHandlerType);
- foreach (ChannelDispatcherBase channelDispatcherBase in serviceHostBase.ChannelDispatchers)
- {
- ChannelDispatcher channelDispatcher = channelDispatcherBase as ChannelDispatcher;
- channelDispatcher.ErrorHandlers.Add(errorHandler);
- }
- }
- }
- [ServiceContract]
- public interface IService
- {
- [OperationContract(Action = "*", ReplyAction = "*")]
- Message Action(Message m);
- }
- [ErrorBehavior(typeof(HttpErrorHandler))]
- public class Service : IService
- {
- public Message Action(Message m)
- {
- throw new FaultException("!");
- }
- }
Add Comment
Please, Sign In to add comment