Created
September 10, 2015 19:05
-
-
Save SidneyAndrewsOpsgility/bc1096ac96401f95b3d7 to your computer and use it in GitHub Desktop.
This is a WCF service hosted in ASP.NET (using an SVC file) that can be used with Service Bus Relay. You must add the Service Bus NuGet packages to get this to work
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<%@ ServiceHost Language="C#" Debug="true" Service="WcfTest.Services.ClockService" CodeBehind="ClockService.svc.cs" %> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
using System; | |
namespace WcfTest.Services | |
{ | |
public class ClockService : IClockService | |
{ | |
public string GetTime() | |
{ | |
return DateTime.Now.ToString("f"); | |
} | |
} | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
using System.ServiceModel; | |
namespace WcfTest.Services | |
{ | |
[ServiceContract] | |
public interface IClockService | |
{ | |
[OperationContract] | |
string GetTime(); | |
} | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
void Main() | |
{ | |
string serviceBusKey = "[replace with your key]"; | |
var binding = new NetTcpRelayBinding(); | |
var endpoint = new EndpointAddress(ServiceBusEnvironment.CreateServiceUri("sb", "[replace with your namespace]", "clock")); | |
var factory = new ChannelFactory<IClockService>(binding, endpoint); | |
factory.Endpoint.Behaviors.Add( | |
new TransportClientEndpointBehavior | |
{ | |
TokenProvider = TokenProvider.CreateSharedAccessSignatureTokenProvider("RootManageSharedAccessKey", serviceBusKey) | |
} | |
); | |
IClockService client = factory.CreateChannel(); | |
client.GetTime().Dump(); | |
} | |
[ServiceContract] | |
public interface IClockService | |
{ | |
[OperationContract] | |
string GetTime(); | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?xml version="1.0" encoding="utf-8"?> | |
<!-- | |
For more information on how to configure your ASP.NET application, please visit | |
http://go.microsoft.com/fwlink/?LinkId=169433 | |
--> | |
<configuration> | |
<system.web> | |
<compilation debug="true" targetFramework="4.5.2"/> | |
<httpRuntime targetFramework="4.5.2"/> | |
</system.web> | |
<system.codedom> | |
<compilers> | |
<compiler language="c#;cs;csharp" extension=".cs" | |
type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.CSharpCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" | |
warningLevel="4" compilerOptions="/langversion:6 /nowarn:1659;1699;1701"/> | |
<compiler language="vb;vbs;visualbasic;vbscript" extension=".vb" | |
type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.VBCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" | |
warningLevel="4" compilerOptions="/langversion:14 /nowarn:41008 /define:_MYTYPE=\"Web\" /optionInfer+"/> | |
</compilers> | |
</system.codedom> | |
<system.serviceModel> | |
<behaviors> | |
<serviceBehaviors> | |
<behavior name=""> | |
<serviceMetadata httpGetEnabled="true" httpsGetEnabled="true"/> | |
<serviceDebug includeExceptionDetailInFaults="true"/> | |
</behavior> | |
</serviceBehaviors> | |
<endpointBehaviors> | |
<behavior name="ServiceBusBehavior"> | |
<transportClientEndpointBehavior> | |
<tokenProvider> | |
<sharedAccessSignature keyName="RootManageSharedAccessKey" key="[replace with your key]" /> | |
</tokenProvider> | |
</transportClientEndpointBehavior> | |
</behavior> | |
</endpointBehaviors> | |
</behaviors> | |
<serviceHostingEnvironment aspNetCompatibilityEnabled="true" multipleSiteBindingsEnabled="true"/> | |
<services> | |
<service name="WcfTest.Services.ClockService"> | |
<endpoint address="" binding="basicHttpBinding" bindingConfiguration="DefaultBinding" contract="WcfTest.Services.IClockService"/> | |
<endpoint address="sb://[replace with your namespace].servicebus.windows.net/clock" binding="netTcpRelayBinding" behaviorConfiguration="ServiceBusBehavior" contract="WcfTest.Services.IClockService"/> | |
</service> | |
</services> | |
<bindings> | |
<basicHttpBinding> | |
<binding name="DefaultBinding" /> | |
</basicHttpBinding> | |
<netTcpRelayBinding> | |
<binding name="ServiceBusBinding" /> | |
</netTcpRelayBinding> | |
</bindings> | |
<extensions> | |
<!-- In this extension section we are introducing all known service bus extensions. User can remove the ones they don't need. --> | |
<behaviorExtensions> | |
<add name="connectionStatusBehavior" | |
type="Microsoft.ServiceBus.Configuration.ConnectionStatusElement, Microsoft.ServiceBus, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/> | |
<add name="transportClientEndpointBehavior" | |
type="Microsoft.ServiceBus.Configuration.TransportClientEndpointBehaviorElement, Microsoft.ServiceBus, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/> | |
<add name="serviceRegistrySettings" | |
type="Microsoft.ServiceBus.Configuration.ServiceRegistrySettingsElement, Microsoft.ServiceBus, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/> | |
</behaviorExtensions> | |
<bindingElementExtensions> | |
<add name="netMessagingTransport" | |
type="Microsoft.ServiceBus.Messaging.Configuration.NetMessagingTransportExtensionElement, Microsoft.ServiceBus, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/> | |
<add name="tcpRelayTransport" | |
type="Microsoft.ServiceBus.Configuration.TcpRelayTransportElement, Microsoft.ServiceBus, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/> | |
<add name="httpRelayTransport" | |
type="Microsoft.ServiceBus.Configuration.HttpRelayTransportElement, Microsoft.ServiceBus, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/> | |
<add name="httpsRelayTransport" | |
type="Microsoft.ServiceBus.Configuration.HttpsRelayTransportElement, Microsoft.ServiceBus, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/> | |
<add name="onewayRelayTransport" | |
type="Microsoft.ServiceBus.Configuration.RelayedOnewayTransportElement, Microsoft.ServiceBus, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/> | |
</bindingElementExtensions> | |
<bindingExtensions> | |
<add name="basicHttpRelayBinding" | |
type="Microsoft.ServiceBus.Configuration.BasicHttpRelayBindingCollectionElement, Microsoft.ServiceBus, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/> | |
<add name="webHttpRelayBinding" | |
type="Microsoft.ServiceBus.Configuration.WebHttpRelayBindingCollectionElement, Microsoft.ServiceBus, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/> | |
<add name="ws2007HttpRelayBinding" | |
type="Microsoft.ServiceBus.Configuration.WS2007HttpRelayBindingCollectionElement, Microsoft.ServiceBus, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/> | |
<add name="netTcpRelayBinding" | |
type="Microsoft.ServiceBus.Configuration.NetTcpRelayBindingCollectionElement, Microsoft.ServiceBus, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/> | |
<add name="netOnewayRelayBinding" | |
type="Microsoft.ServiceBus.Configuration.NetOnewayRelayBindingCollectionElement, Microsoft.ServiceBus, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/> | |
<add name="netEventRelayBinding" | |
type="Microsoft.ServiceBus.Configuration.NetEventRelayBindingCollectionElement, Microsoft.ServiceBus, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/> | |
<add name="netMessagingBinding" | |
type="Microsoft.ServiceBus.Messaging.Configuration.NetMessagingBindingCollectionElement, Microsoft.ServiceBus, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/> | |
</bindingExtensions> | |
</extensions> | |
</system.serviceModel> | |
<appSettings> | |
<!-- Service Bus specific app setings for messaging connections --> | |
<add key="Microsoft.ServiceBus.ConnectionString" | |
value="Endpoint=sb://[your namespace].servicebus.windows.net;SharedAccessKeyName=RootManageSharedAccessKey;SharedAccessKey=[your secret]"/> | |
</appSettings> | |
</configuration> |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment