namespace WindowsServiceApp { [ServiceContract(CallbackContract = typeof(IWcfServiceCallBack))] public interface IWcfService { [OperationContract] void getAuth(string auth); [OperationContract] double getPrice(string auth); } [ServiceContract] public interface IWcfServiceCallBack { [OperationContract(IsOneWay = true)] void getCallBack(string returnAurth); } } namespace WindowsServiceApp { public class WcfService : IWcfService { public static string errorMessage = ""; public void getAuth(string auth) { WindowsServiceApp.WinService.FormScan formScan = new WinService.FormScan(); } public double getPrice(string auth) { double a = 1; return a; } } } namespace WindowsServiceApp { public partial class WinService : ServiceBase { ServiceHost host; private static string errorMessage = ""; public WinService() { InitializeComponent(); } protected override void OnStart(string[] args) { host = new ServiceHost(typeof(WcfService)); host.Open(); } protected override void OnStop() { host.Close(); } } } <?xml version="1.0" encoding="utf-8" ?> <configuration> <system.serviceModel> <behaviors> <serviceBehaviors> <behavior name="WindowsServiceApp.WcfServiceBehavior"> <serviceMetadata httpGetEnabled="true" /> <serviceDebug includeExceptionDetailInFaults="true" /> </behavior> </serviceBehaviors> </behaviors> <bindings> <wsDualHttpBinding> <binding name="WSDualHttpBindingConfig" clientBaseAddress="http://localhost:8733/" > <security mode="None"/> </binding> </wsDualHttpBinding> </bindings> <services> <service behaviorConfiguration="WindowsServiceApp.WcfServiceBehavior" name="WindowsServiceApp.WcfService"> <endpoint address="" binding="wsDualHttpBinding" bindingConfiguration="WSDualHttpBindingConfig" contract="WindowsServiceApp.IWcfService" /> <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" /> <host> <baseAddresses> <add baseAddress="http://localhost:8733/" /> </baseAddresses> </host> </service> </services> </system.serviceModel> </configuration>
Tuesday, December 1, 2015
WCF Duplex Communication in Windows Service
Saturday, September 19, 2015
Return Dynamic Object From Web Api
public HttpResponseMessage Contactz() { var data = new List(); data.Add("abc"); data.Add("abc"); data.Add("abc"); data.Add("abc"); return new HttpResponseMessage { Content = new StringContent(JArray.FromObject(data).ToString(), Encoding.UTF8, "application/json") }; }
Wednesday, September 9, 2015
MVC Custom Authetication
public class HomeController : Controller { [CustomRole] public ActionResult Index() { return View(); } } [AttributeUsage(AttributeTargets.Method | AttributeTargets.Class, Inherited = true, AllowMultiple = true)] public class CustomRole : AuthorizeAttribute { protected override bool AuthorizeCore(HttpContextBase context) { //Call from db var a = 3; if (a==2) { return true; } else { return false; } } }
Sunday, August 2, 2015
Angular Js Server Side And Client Side Authentication for web api
<!doctype html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Example - example-$route-service-production</title> <script src="//ajax.googleapis.com/ajax/libs/angularjs/1.4.1/angular.min.js"></script> <script src="//ajax.googleapis.com/ajax/libs/angularjs/1.4.1/angular-route.js"></script> <script> var app = angular.module('ngRouteExample', ['ngRoute']); app.factory('rootingfact', function ($http, $q) { return { getPerson: function (entity) { var deferred = $q.defer(); $http.get('/api/Home/getvalue', { // params: { op: 'get' }, headers: { "AUTH_TOKEN": entity.token } }).success(function (data) { deferred.resolve({ title: data.title, cost: data.price }); }).error(function (msg, code) { deferred.reject(msg); $log.error(msg, code); }); return deferred.promise; } } }); app.controller('RootControllerCreate', function ($scope, $http, rootingfact) { rootingfact.getPerson($scope.entity).then( function (result) { alert('authorized'); }, function (error) { alert('error'); } ); }); app.controller('RootControllerDetail', function ($scope) { }); app.controller('RootControllerUpdate', function ($scope) { }); app.config(function ($routeProvider, $locationProvider) { $routeProvider .when('/Routing/Detail', { templateUrl: 'Routing/Detail', controller: 'RootControllerDetail' }) .when('/Routing/Create', { templateUrl: 'Routing/Create', controller: 'RootControllerCreate' }) .when('/Routing/Update', { templateUrl: 'Routing/Update', controller: 'RootControllerUpdate' }) .otherwise({ redirectTo: '/' }); // configure html5 to get links working on jsfiddle // $locationProvider.html5Mode(true); }); app.run(function ($rootScope, $location) { $rootScope.$on("$routeChangeStart", function (args) { var path = $location.path().split('/'); $rootScope.entity = {}; /* $rootScope.entity.ctrl = path[1]; $rootScope.entity.action = path[2];*/ $rootScope.entity.token = "124_sdfssdfsdfsdf_" + path[1] + "_" + path[2]; }) //$rootScope.$on("$routeChangeSuccess".... //$rootScope.$on("$routeChangeError".... }); </script> </head> <body ng-app="ngRouteExample"> Choose: <a href="/#/Routing/Create">Create</a> | <a href="/#/Routing/Detail">Detail</a> | <a href="/#/Routing/Update">Update</a> | <div ng-view></div> </body> </html> public class Global : HttpApplication { void Application_Start(object sender, EventArgs e) { // Code that runs on application startup AreaRegistration.RegisterAllAreas(); GlobalConfiguration.Configure(WebApiConfig.Register); RouteConfig.RegisterRoutes(RouteTable.Routes); } void Application_BeginRequest(object sender, EventArgs e) { var context = HttpContext.Current; var request = context.Request; string url = request.Url.LocalPath; if (url.IndexOf("api/") != -1) { IEnumerable<string> headerValues = request.Headers.GetValues("AUTH_TOKEN"); if (headerValues != null) { string[] token = headerValues.ToArray(); string[] all = token[0].Split('_'); // var dbId = dbContext.abc.FirstOrDefault(x => x.token == token); if ("sdfssdfsdfsdf" != all[1]) { throw new Exception("User now exists"); } } else { throw new Exception("Error"); } } } } public class test { [Key, DatabaseGenerated(DatabaseGeneratedOption.Identity)] public string name { get; set; } public decimal? allowance { get; set; } public bool paid { get; set; } } public class abc { public int id { get; set; } public string token { get; set; } } public class context : DbContext { public DbSet<abc> abc { get; set; } } public class HomeController : ApiController { [HttpGet] public HttpResponseMessage getvalue() { string abc = ""; return new HttpResponseMessage { Content = new StringContent(abc, System.Text.Encoding.UTF8, "application/json") }; } }
Friday, July 10, 2015
ng grid with multiple column filter
<!DOCTYPE html> <html ng-app="myApp"> <head lang="en"> <meta charset="utf-8"> <title>ng grid paging</title> <link rel="stylesheet" type="text/css" href="http://angular-ui.github.com/ng-grid/css/ng-grid.css" /> <style> .gridStyle { border: 1px solid rgb(212,212,212); width: 600px; height: 300px; } </style> <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.8.0/jquery.min.js"></script> <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.0.5/angular.js"></script> <script type="text/javascript" src="http://angular-ui.github.com/ng-grid/lib/ng-grid.debug.js"></script> <script type="text/javascript"> var app = angular.module('myApp', ['ngGrid']); app.controller('MyCtrl', function ($scope, $http) { $scope.filterOptions = {}; var myHeaderCellTemplate = '<div>{{col.displayName}}</div>' + '<input type="text" ng-model="gridOptions.filterOptions[col.displayName]"/>'; $scope.totalServerItems = 0; $scope.pagingOptions = { pageSizes: [250, 500, 1000], pageSize: 250, currentPage: 1 }; $scope.getPagedDataAsync = function (pageSize, page, filterOptions) { var searchStr = JSON.stringify(filterOptions); setTimeout(function () { $http.get('/api/home/getJson?pageSize=' + pageSize + '&page=' + page + '&searchStr=' + searchStr).success(function (largeLoad) { $scope.myData = largeLoad.data; $scope.totalServerItems = largeLoad.count; if (!$scope.$$phase) { $scope.$apply(); } }); }, 100); }; $scope.getPagedDataAsync($scope.pagingOptions.pageSize, $scope.pagingOptions.currentPage); $scope.$watch('pagingOptions', function (newVal, oldVal) { if (newVal !== oldVal && newVal.currentPage !== oldVal.currentPage) { $scope.getPagedDataAsync($scope.pagingOptions.pageSize, $scope.pagingOptions.currentPage, $scope.filterOptions); } }, true); $scope.$watch('filterOptions', function (newVal, oldVal) { if (newVal !== oldVal) { $scope.getPagedDataAsync($scope.pagingOptions.pageSize, $scope.pagingOptions.currentPage, $scope.filterOptions); } }, true); $scope.gridOptions = { data: 'myData', enablePaging: true, rowHeight: 36, headerRowHeight: 60, showFooter: true, totalServerItems: 'totalServerItems', pagingOptions: $scope.pagingOptions, filterOptions: $scope.filterOptions, columnDefs: [{ field: 'name', displayName: 'name', headerCellTemplate: myHeaderCellTemplate }, { field: 'allowance', displayName: 'allowance', headerCellTemplate: myHeaderCellTemplate }, { field: 'paid', displayName: 'paid', headerCellTemplate: myHeaderCellTemplate }] }; }); </script> </head> <body ng-controller="MyCtrl"> <div class="gridStyle" ng-grid="gridOptions"></div> </body> </html> public class test { [Key, DatabaseGenerated(DatabaseGeneratedOption.Identity)] public string name { get; set; } public decimal? allowance { get; set; } public bool paid { get; set; } } public class HomeController : ApiController { [HttpGet] public HttpResponseMessage getJson(int pageSize, int page, string searchStr) { test searchParms = searchStr == "undefined" ? new test() : new JavaScriptSerializer().Deserialize<test>(searchStr); string jsonstr = "[{ \"name\": \"Moroni\", \"allowance\": 505050505050505050, \"paid\": true },{ \"name\": \"Tiancum\", \"allowance\": 53, \"paid\": false },{ \"name\": \"Jacob\", \"allowance\": 27, \"paid\": false },{ \"name\": \"Nephi\", \"allowance\": 29, \"paid\": false },{ \"name\": \"Enos\", \"allowance\": 34, \"paid\": false },{ \"name\": \"Ether\", \"allowance\": 42, \"paid\": false },{ \"name\": \"Alma\", \"allowance\": 43, \"paid\": true },{ \"name\": \"Jared\", \"allowance\": 21, \"paid\": true },{ \"name\": \"Moroni\", \"allowance\": 50, \"paid\": true },{ \"name\": \"Tiancum\", \"allowance\": 53, \"paid\": false },{ \"name\": \"Jacob\", \"allowance\": 27, \"paid\": false },{ \"name\": \"Nephi\", \"allowance\": 29, \"paid\": false },{ \"name\": \"Enos\", \"allowance\": 34, \"paid\": false },{ \"name\": \"Ether\", \"allowance\": 42, \"paid\": false },{ \"name\": \"Alma\", \"allowance\": 43, \"paid\": true },{ \"name\": \"Jared\", \"allowance\": 21, \"paid\": true },{ \"name\": \"Moroni\", \"allowance\": 50, \"paid\": true },{ \"name\": \"Tiancum\", \"allowance\": 53, \"paid\": false },{ \"name\": \"Jacob\", \"allowance\": 27, \"paid\": false },{ \"name\": \"Nephi\", \"allowance\": 29, \"paid\": false },{ \"name\": \"Enos\", \"allowance\": 34, \"paid\": false },{ \"name\": \"Ether\", \"allowance\": 42, \"paid\": false },{ \"name\": \"Alma\", \"allowance\": 43, \"paid\": true },{ \"name\": \"Jared\", \"allowance\": 21, \"paid\": true },{ \"name\": \"Moroni\", \"allowance\": 50, \"paid\": true },{ \"name\": \"Tiancum\", \"allowance\": 53, \"paid\": false },{ \"name\": \"Jacob\", \"allowance\": 27, \"paid\": false },{ \"name\": \"Nephi\", \"allowance\": 29, \"paid\": false },{ \"name\": \"Enos\", \"allowance\": 34, \"paid\": false },{ \"name\": \"Ether\", \"allowance\": 42, \"paid\": false },{ \"name\": \"Alma\", \"allowance\": 43, \"paid\": true },{ \"name\": \"Jared\", \"allowance\": 21, \"paid\": true },{ \"name\": \"Moroni\", \"allowance\": 50, \"paid\": true },{ \"name\": \"Tiancum\", \"allowance\": 53, \"paid\": false }]"; List<test> jsonList = new List<test>(); jsonList = new JavaScriptSerializer().Deserialize<List<test>>(jsonstr); var result1 = searchParms.name == "" || searchParms.name == null ? jsonList : jsonList.Where(x => x.name.Contains(searchParms.name)); var result2 = searchParms.allowance == 0 || searchParms.allowance == null ? result1 : result1.Where(x => x.allowance.Equals(searchParms.allowance)); //result = searchParms.paid == null ? jsonList : result.Where(x => x.paid.Equals(searchParms.paid)); var totalcount = result2.Count(); var finalresult = result2.Skip((page - 1) * pageSize).Take(pageSize); string jsonstr2 = new JavaScriptSerializer().Serialize(finalresult); StringBuilder sb = new StringBuilder(); sb.Append("{\"data\":").Append(jsonstr2).Append(", \"count\":").Append(totalcount).Append("}"); //dynamic stuff = JObject.Parse("{ 'name': 'Moroni', 'allowance': 505050505050505050, 'paid': true }"); return new HttpResponseMessage { Content = new StringContent(sb.ToString(), System.Text.Encoding.UTF8, "application/json") }; } }
Wednesday, July 8, 2015
ng grid with paging
<!DOCTYPE html> <html ng-app="myApp"> <head lang="en"> <meta charset="utf-8"> <title>ng grid paging</title> <link rel="stylesheet" type="text/css" href="http://angular-ui.github.com/ng-grid/css/ng-grid.css" /> <style> .gridStyle { border: 1px solid rgb(212,212,212); width: 600px; height: 300px; } </style> <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.8.0/jquery.min.js"></script> <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.0.2/angular.min.js"></script> <script type="text/javascript" src="http://angular-ui.github.com/ng-grid/lib/ng-grid.debug.js"></script> <script type="text/javascript"> var app = angular.module('myApp', ['ngGrid']); app.controller('MyCtrl', function ($scope, $http) { $scope.totalServerItems = 0; $scope.pagingOptions = { pageSizes: [5, 10, 20], pageSize: 5, currentPage: 1 }; $scope.getPagedDataAsync = function (pageSize, page) { setTimeout(function () { $http.get('/api/home/getJson?page=' + page + '&pageSize=' + pageSize + '').success(function (largeLoad) { $scope.myData = largeLoad.data; $scope.totalServerItems = largeLoad.count; if (!$scope.$$phase) { $scope.$apply(); } }); }, 1000); }; $scope.getPagedDataAsync($scope.pagingOptions.pageSize, $scope.pagingOptions.currentPage); $scope.$watch('pagingOptions', function (newVal, oldVal) { if (newVal !== oldVal && newVal.currentPage !== oldVal.currentPage) { $scope.getPagedDataAsync($scope.pagingOptions.pageSize, $scope.pagingOptions.currentPage); } }, true); $scope.gridOptions = { data: 'myData', enablePaging: true, showFooter: true, totalServerItems: 'totalServerItems', pagingOptions: $scope.pagingOptions }; }); </script> </head> <body ng-controller="MyCtrl"> <div class="gridStyle" ng-grid="gridOptions"></div> </body> </html> public class test { [Key, DatabaseGenerated(DatabaseGeneratedOption.Identity)] public string name { get; set; } public decimal allowance { get; set; } public bool paid { get; set; } } public class HomeController : ApiController { public HttpResponseMessage getJson(int page, int pageSize) { string jsonstr = "[{ \"name\": \"Moroni\", \"allowance\": 505050505050505050, \"paid\": true },{ \"name\": \"Tiancum\", \"allowance\": 53, \"paid\": false },{ \"name\": \"Jacob\", \"allowance\": 27, \"paid\": false },{ \"name\": \"Nephi\", \"allowance\": 29, \"paid\": false },{ \"name\": \"Enos\", \"allowance\": 34, \"paid\": false },{ \"name\": \"Ether\", \"allowance\": 42, \"paid\": false },{ \"name\": \"Alma\", \"allowance\": 43, \"paid\": true },{ \"name\": \"Jared\", \"allowance\": 21, \"paid\": true },{ \"name\": \"Moroni\", \"allowance\": 50, \"paid\": true },{ \"name\": \"Tiancum\", \"allowance\": 53, \"paid\": false },{ \"name\": \"Jacob\", \"allowance\": 27, \"paid\": false },{ \"name\": \"Nephi\", \"allowance\": 29, \"paid\": false },{ \"name\": \"Enos\", \"allowance\": 34, \"paid\": false },{ \"name\": \"Ether\", \"allowance\": 42, \"paid\": false },{ \"name\": \"Alma\", \"allowance\": 43, \"paid\": true },{ \"name\": \"Jared\", \"allowance\": 21, \"paid\": true },{ \"name\": \"Moroni\", \"allowance\": 50, \"paid\": true },{ \"name\": \"Tiancum\", \"allowance\": 53, \"paid\": false },{ \"name\": \"Jacob\", \"allowance\": 27, \"paid\": false },{ \"name\": \"Nephi\", \"allowance\": 29, \"paid\": false },{ \"name\": \"Enos\", \"allowance\": 34, \"paid\": false },{ \"name\": \"Ether\", \"allowance\": 42, \"paid\": false },{ \"name\": \"Alma\", \"allowance\": 43, \"paid\": true },{ \"name\": \"Jared\", \"allowance\": 21, \"paid\": true },{ \"name\": \"Moroni\", \"allowance\": 50, \"paid\": true },{ \"name\": \"Tiancum\", \"allowance\": 53, \"paid\": false },{ \"name\": \"Jacob\", \"allowance\": 27, \"paid\": false },{ \"name\": \"Nephi\", \"allowance\": 29, \"paid\": false },{ \"name\": \"Enos\", \"allowance\": 34, \"paid\": false },{ \"name\": \"Ether\", \"allowance\": 42, \"paid\": false },{ \"name\": \"Alma\", \"allowance\": 43, \"paid\": true },{ \"name\": \"Jared\", \"allowance\": 21, \"paid\": true },{ \"name\": \"Moroni\", \"allowance\": 50, \"paid\": true },{ \"name\": \"Tiancum\", \"allowance\": 53, \"paid\": false }]"; List<test> jsonList = new List<test>(); jsonList = new JavaScriptSerializer().Deserialize<List<test>>(jsonstr); var totalcount = jsonList.Count(); var result = jsonList.Skip((page - 1) * pageSize).Take(pageSize); string jsonstr2 = new JavaScriptSerializer().Serialize(result); StringBuilder sb = new StringBuilder(); sb.Append("{\"data\":").Append(jsonstr2).Append(", \"count\":").Append(totalcount).Append("}"); //dynamic stuff = JObject.Parse("{ 'name': 'Moroni', 'allowance': 505050505050505050, 'paid': true }"); return new HttpResponseMessage { Content = new StringContent(sb.ToString(), System.Text.Encoding.UTF8, "application/json") }; } }
Friday, July 3, 2015
Angular Js Scope and rootScope
<!doctype html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Example - scope and rootscope</title> <script src="//ajax.googleapis.com/ajax/libs/angularjs/1.4.1/angular.min.js"></script> <script src="//ajax.googleapis.com/ajax/libs/angularjs/1.4.1/angular-route.js"></script> <script> angular.module('ngRouteExample', ['ngRoute']) .run(function ($rootScope) { $rootScope.test = "from on execute run"; }) .controller('RootControllerCreate', function ($scope, $rootScope) { $scope.test = "from create control"; }) .controller('RootControllerDetail', function ($scope, $rootScope) { $rootScope.test = "from detail control"; }) .controller('RootControllerUpdate', function ($scope, $rootScope) { //$rootScope.test = "from update control"; }) .config(function ($routeProvider, $locationProvider) { $routeProvider .when('/Routing/Detail', { templateUrl: 'Routing/Detail', controller: 'RootControllerDetail' }) .when('/Routing/Create', { templateUrl: 'Routing/Create', controller: 'RootControllerCreate' }) .when('/Routing/Update', { templateUrl: 'Routing/Update', controller: 'RootControllerUpdate' }) .otherwise({ redirectTo: 'Routing/Index' }); // configure html5 to get links working on jsfiddle // $locationProvider.html5Mode(true); }); </script> </head> <body ng-app="ngRouteExample"> Choose: <a href="/#/Routing/Create">Create</a> | <a href="/#/Routing/Detail">Detail</a> | <a href="/#/Routing/Update">Update</a> | <h3>{{test}}</h3> <div ng-view></div> </body> </html>
Subscribe to:
Posts (Atom)