My favorites | Sign in
Project Home Issues Source
Checkout   Browse   Changes    
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
using System;
using System.ServiceModel;
using System.ServiceModel.Web;
using System.ServiceModel.Channels;
using System.ServiceModel.Dispatcher;
using System.ServiceModel.Description;

namespace AdamDotCom.Common.Service.Infrastructure.JSONP
{
public class JSONP : JSONPBehavior { }

public class JSONPBehavior : Attribute, IOperationBehavior
{
public string callback;
public const string Name = "JSONPMessageProperty";

public void AddBindingParameters(OperationDescription operationDescription, BindingParameterCollection bindingParameters) { return; }

public void ApplyClientBehavior(OperationDescription operationDescription, ClientOperation clientOperation)
{
clientOperation.ParameterInspectors.Add(new Inspector(callback));
}

public void ApplyDispatchBehavior(OperationDescription operationDescription, DispatchOperation dispatchOperation)
{
dispatchOperation.ParameterInspectors.Add(new Inspector(callback));
}

public void Validate(OperationDescription operationDescription) { return; }

class Inspector : IParameterInspector
{
string callback;
public Inspector(string callback)
{
this.callback = callback;
}

public void AfterCall(string operationName, object[] outputs, object returnValue, object correlationState)
{
}

public object BeforeCall(string operationName, object[] inputs)
{
if (WebOperationContext.Current != null)
{
string methodName = WebOperationContext.Current.IncomingRequest.UriTemplateMatch.QueryParameters[callback];
if (methodName != null)
{
var property = new JSONPMessageProperty
{
MethodName = methodName
};
OperationContext.Current.OutgoingMessageProperties.Add(Name, property);
}
}
return null;
}
}
}

public static class JSONPBehaviorExtensions
{
public static bool IsJSONPBehavior(this Message message)
{
return message.Properties.ContainsKey(JSONPBehavior.Name);
}
}
}

Change log

r84 by adam.kahtava.com on May 24, 2010   Diff
Syncronized each individual service to
make use of the new WCF
CustomMessageEncoding as opposed to the
JSONPMessageEncoding. Also updated the
live host configs and rewrites.
Go to: 
Sign in to write a code review

Older revisions

r80 by adam.kahtava.com on May 17, 2010   Diff
Syncing SVN and solution files
r62 by adam.kahtava.com on Feb 18, 2010   Diff
Added JSONP support for WCF. (Yanked
it from: http://msdn.microsoft.com/en-
us/library/cc716898.aspx)
All revisions of this file

File info

Size: 2532 bytes, 69 lines
Powered by Google Project Hosting