Create Pull Request
| Date | Scan | Status | Result |
|---|---|---|---|
| 2025-07-12 23:44 | #41 | cancelled |
Biased
|
| 2025-07-12 00:58 | #8 | cancelled |
Clean
|
| 2025-07-10 05:06 | #7 | processing |
Clean
|
<services>
<service name="ProductsServer.ProductsService">
<endpoint address="sb://yourServiceNamespace.servicebus.windows.net/products" binding="netTcpRelayBinding" contract="ProductsServer.IProducts" behaviorConfiguration="products"/>
</service>
</services>
<behaviors>
<endpointBehaviors>
<behavior name="products">
<transportClientEndpointBehavior>
<tokenProvider>
<sharedAccessSignature keyName="RootManageSharedAccessKey" key="yourKey" />
</tokenProvider>
</transportClientEndpointBehavior>
</behavior>
</endpointBehaviors>
</behaviors>
namespace ProductsServer
{
using System;
using System.Linq;
using System.Collections.Generic;
using System.ServiceModel;
// Implement the IProducts interface.
class ProductsService : IProducts
{
// Populate array of products for display on website
ProductData[] products =
new []
{
new ProductData{ Id = "1", Name = "Rock",
Quantity = "1"},
new ProductData{ Id = "2", Name = "Paper",
Quantity = "3"},
new ProductData{ Id = "3", Name = "Scissors",
Quantity = "5"},
new ProductData{ Id = "4", Name = "Well",
Quantity = "2500"},
};
// Display a message in the service console application
// when the list of products is retrieved.
public IList<ProductData> GetProducts()
{
Console.WriteLine("GetProducts called.");
return products;
}
}
class Program
{
// Define the Main() function in the service application.
static void Main(string[] args)
{
var sh = new ServiceHost(typeof(ProductsService));
sh.Open();
Console.WriteLine("Press ENTER to close");
Console.ReadLine();
sh.Close();
}
}
}
namespace ProductsWeb.Controllers
{
using System.Linq;
using System.ServiceModel;
using System.Web.Mvc;
using Microsoft.ServiceBus;
using Models;
using ProductsServer;
public class HomeController : Controller
{
// Declare the channel factory.
static ChannelFactory<IProductsChannel> channelFactory;
static HomeController()
{
// Create shared access signature token credentials for authentication.
channelFactory = new ChannelFactory<IProductsChannel>(new NetTcpRelayBinding(),
"sb://yourServiceNamespace.servicebus.windows.net/products");
channelFactory.Endpoint.Behaviors.Add(new TransportClientEndpointBehavior {
TokenProvider = TokenProvider.CreateSharedAccessSignatureTokenProvider(
"RootManageSharedAccessKey", "yourKey") });
}
public ActionResult Index()
{
using (IProductsChannel channel = channelFactory.CreateChannel())
{
// Return a view of the products inventory.
return this.View(from prod in channel.GetProducts()
select
new Product { Id = prod.Id, Name = prod.Name,
Quantity = prod.Quantity });
}
}
}
}
namespace ProductsServer
{
using System.Collections.Generic;
using System.Runtime.Serialization;
using System.ServiceModel;
// Define the data contract for the service
[DataContract]
// Declare the serializable properties.
public class ProductData
{
[DataMember]
public string Id { get; set; }
[DataMember]
public string Name { get; set; }
[DataMember]
public string Quantity { get; set; }
}
// Define the service contract.
[ServiceContract]
interface IProducts
{
[OperationContract]
IList<ProductData> GetProducts();
}
interface IProductsChannel : IProducts, IClientChannel
{
}
}