robgarrett.comRob Garrett – Blog | Software and Technology Tid-bits

robgarrett.com Profile

robgarrett.com

Title:Rob Garrett – Blog | Software and Technology Tid-bits

Description:Software and Technology Tid-bits

Discover robgarrett.com website stats, rating, details and status online.Use our online tools to find owner and admin contact info. Find out where is server located.Read and write reviews or vote to improve it ranking. Check alliedvsaxis duplicates with related css, domain relations, most used words, social networks references. Go to regular site

robgarrett.com Information

Website / Domain: robgarrett.com
HomePage size:90.046 KB
Page Load Time:0.460038 Seconds
Website IP Address: 70.39.97.231
Isp Server: Sharktech

robgarrett.com Ip Information

Ip Country: United States
City Name: Las Vegas
Latitude: 36.082401275635
Longitude: -115.10109710693

robgarrett.com Keywords accounting

Keyword Count

robgarrett.com Httpheader

Content-Length: 23168
Content-Type: text/html; charset=UTF-8
Content-Encoding: gzip
Vary: Accept-Encoding
Server: Microsoft-IIS/10.0
X-Powered-By: PHP/5.6.40, ASP.NET
Link: https://blog.robgarrett.com/wp-json/; rel="https://api.w.org/", https://wp.me/a4K1k; rel=shortlink
Set-Cookie: ARRAffinity=d18444dd0c3446b144657981cbe1abd2337914dedf8fa69a838c51c77702703a;Path=/;HttpOnly;Secure;Domain=blog.robgarrett.com, ARRAffinitySameSite=d18444dd0c3446b144657981cbe1abd2337914dedf8fa69a838c51c77702703a;Path=/;HttpOnly;SameSite=None;Secure;Domain=blog.robgarrett.com
Date: Sat, 27 Feb 2021 19:39:44 GMT

robgarrett.com Meta Info

charset="utf-8"/
content="width=device-width" name="viewport"/
content="WordPress 4.9.16" name="generator"/
content="website" property="og:type"/
content="Rob Garrett - Blog" property="og:title"/
content="Software and Technology Tid-bits" property="og:description"/
content="https://blog.robgarrett.com/" property="og:url"/
content="Rob Garrett - Blog" property="og:site_name"/
content="https://s0.wp.com/i/blank.jpg" property="og:image"/
content="en_US" property="og:locale"/

70.39.97.231 Domains

Domain WebSite Title

robgarrett.com Similar Website

Domain WebSite Title
robgarrett.comRob Garrett – Blog | Software and Technology Tid-bits
simplybits.comInternet - Phone - Business Technology Solutions | Simply Bits
carbideprocessors.comRouter Bits, Saw Blades, Carbide, Drill Bits
mincondthhammers.dthrotarydrilling.comMincon Dth Hammers and Button Bits, Rock Drill Dth Hammers, Rock well Drilling Bits, Reverce Circula
ebills.tid.orgTID Bill Presentation
camerabits.comHomepage - Camera Bits, Inc. Camera Bits, Inc.
tecno.educaredigital.comTID Primaria, Libros Digitales
tid.orgTID Water & Power | Turlock Irrigation District
bits.ondrovo.combits.ondrovo.com
robwittman.comUS Congressman Rob Wittman
bits.blogs.nytimes.comBits - The New York Times
store.camerabits.comCamera Bits Store
robmcneilly.simplero.comHome - Rob McNeilly - CET
robzerwekh.comRob Zerwekh - Radio clips
robgoldman.lawyer.comRob Goldman - Dundalk MD Estate Lawyer

robgarrett.com Traffic Sources Chart

robgarrett.com Alexa Rank History Chart

robgarrett.com aleax

robgarrett.com Html To Plain Text

Rob Garrett – Blog Software and Technology Tid-bits Twitter Facebook RSS Info Menu Skip to content Home SharePoint Provider-Hosted Add-In and Web Api This topic has been discussed several times – how do you go about using Web API from within a single page SharePoint Provider-Hosted add-in? Bas Lijten had a great approach, which I emulated with some additions. Provider-Hosted add-ins rely on OAUTH under the hood, and the technicalities are normally abstracted by SharePointContext and TokenHelper classes. In short, the issue with these classes is that they assume access to both HttpContext.Current and session state, neither which Web API guarantees. Bas wrote a custom set of classes that perform the same job as the stock classes, but for Web API. I went one step further and provided a set of classes that work for both MVC page rendering and Web API. My custom provider avoids the use of session state and instead uses cookies to pass values between standard MVC SharePoint add-in calls and Web API calls (AJAX). You can see my code and read a more technical description over at GitHub . This entry was posted in Software Development and tagged SharePoint , Web Development on April 20, 2018 by robgarrett . SharePoint 2010 Calendar Item Error – Item Does Not exist. It may have been deleted by another user Today, I encountered an interesting issue with SharePoint calendar list items. My customer had created a recurring calendar entry using Outlook and then subsequently deleted the series in Outlook. Somewhere along the timeline they may have updated specific instances in the series. After deleting the series my customer noticed future events in the recurrence series remaining in the SharePoint Calendar list. Any attempt to delete these list items via the UI or PowerShell resulted in the error “ Item Does Not exist. It may have been deleted by another user “. SharePoint handles recurring events by creating child list items for every event in the series and tying them to one master list item – stored in the MasterSeriesItemID field. The master list item is not shown via the UI, since users see the events in the series, especially when the series has exceptions. Deleting the master list item with ID specified in MasterSeriesItemID resulted in deleting the entire set of recurring events in the series, which was the desired outcome. I’m guessing Outlook should have deleted the series master item in SharePoint when the user deleted the series in Outlook, but that clearly didn’t happen. This entry was posted in Applications and tagged SharePoint 2010 on May 15, 2017 by robgarrett . SharePoint High-Trust App Only Context from PowerShell Wictor Wilén wrote a great post on getting an “app-only” client context for SharePoint Add-ins using ACS – Low Trust Add-ins. I wanted to do something similar with High-Trust Server-2-Server Provider-Hosted Add-ins. I needed the app-only context so that I could use the Tenant API to create on-premises site collections from PowerShell. With the help of Fiddler and some mad PowerShell skills, I came up with the following function. Function GetAppOnlyContext { Param([string]$clientId, [string]$issuerId, [string]$certPath, [string]$certPwd, [scriptblock]$GetAppOnlyContextCB); [System.Reflection.Assembly]::LoadWithPartialName("System") | Out-Null; [System.Reflection.Assembly]::LoadWithPartialName("System.Collections") | Out-Null; [System.Reflection.Assembly]::Load("System.IdentityModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089") | Out-Null; [System.Reflection.Assembly]::Load("Microsoft.IdentityModel, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35") | Out-Null; [System.Reflection.Assembly]::LoadWithPartialName("Microsoft.IdentityModel.Extensions") | Out-Null; # Get the realm. $realm = ""; $headers = @{Authorization = "Bearer "}; Try { $x = Invoke-WebRequest -Uri "$($tenantUrl)_vti_bin/client.svc" -Headers $headers -Method POST -UseBasicParsing; } Catch { # We expect a 401 here. $realm = $_.Exception.Response.Headers["WWW-Authenticate"].Substring(7).Split(",")[0].Split("=")[1].Trim("`""); } $issuer = "$($issuerId)@$($realm)"; $nameId = "$($clientId)@$($realm)"; $uri = New-Object System.Uri($tenantUrl); $audience = "00000003-0000-0ff1-ce00-000000000000/$($uri.Authority)@$($realm)"; # Get the claims $actorClaims = New-Object System.Collections.Generic.List[Microsoft.IdentityModel.S2S.Tokens.JsonWebTokenClaim]; $claim = New-Object Microsoft.IdentityModel.S2S.Tokens.JsonWebTokenClaim("nameid", $nameId); $actorClaims.Add($claim); # Get the signing credentials $cert = New-Object System.Security.Cryptography.X509Certificates.X509Certificate2($certPath, $certPwd); $signingCreds = New-Object Microsoft.IdentityModel.SecurityTokenService.X509SigningCredentials(` $cert, [System.IdentityModel.Tokens.SecurityAlgorithms]::RsaSha256Signature, ` [System.IdentityModel.Tokens.SecurityAlgorithms]::Sha256Digest); # Create the token. $token = New-Object Microsoft.IdentityModel.S2S.Tokens.JsonWebSecurityToken(` $issuer, $audience, [System.DateTime]::UtcNow, [System.DateTime]::UtcNow.AddHours(12), $actorClaims, $signingCreds); $tokenString = (New-Object Microsoft.IdentityModel.S2S.Tokens.JsonWebSecurityTokenHandler).WriteTokenAsString($token); [Microsoft.SharePoint.Client.ClientContext]$clientContext = $null; Try { # Create the client context. $clientContext = New-Object Microsoft.SharePoint.Client.ClientContext($tenantUrl); $clientContext.AuthenticationMode = [Microsoft.SharePoint.Client.ClientAuthenticationMode]::Anonymous; $clientContext.FormDigestHandlingEnabled = $false; AddRequestHandler -clientContext $clientContext -token $tokenString; if ($GetAppOnlyContextCB -ne $null) { &$GetAppOnlyContextCB -clientContext $clientContext; } } Finally { if ($clientContext -ne $null) { $clientContext.Dispose(); } } } Function AddRequestHandler { Param([Microsoft.SharePoint.Client.ClientContext]$clientContext, [string]$token); Add-Type -TypeDefinition @" using System; using Microsoft.SharePoint.Client; namespace SPHelper { public static class ClientContextHelper { private static string _token = ""; public static void AddRequestHandler(ClientContext ctx, string token) { _token = token; ctx.ExecutingWebRequest += new EventHandler<WebRequestEventArgs>(RequestHandler); } private static void RequestHandler(object sender, WebRequestEventArgs e) { e.WebRequestExecutor.RequestHeaders["Authorization"] = "Bearer " + _token; } } } "@ -ReferencedAssemblies "$env:dp0\DLLs\Microsoft.SharePoint.Client.dll", "$env:dp0\DLLs\Microsoft.SharePoint.Client.Runtime.dll"; [SPHelper.ClientContextHelper]::AddRequestHandler($clientContext, $token); } This entry was posted in Software Development and tagged SharePoint 2013 on March 16, 2017 by robgarrett . SharePoint Online AppRegNew via PowerShell $clientId = "clientId GUID" $appDomain = "App Domain" $appName = "Friendly Name" $appUrl = "App Url" $newClientSecret = "Client Secret" $servicePrincipalName = @("$clientID/$appDomain") New-MsolServicePrincipal -ServicePrincipalNames $servicePrincipalName -AppPrincipalId $clientID -DisplayName $appName ` -Type Symmetric -Usage Verify -StartDate "12/01/2016" -EndDate "12/01/2017" -Addresses (New-MsolServicePrincipalAddresses -Address $appUrl) New-MsolServicePrincipalCredential -AppPrincipalId $clientId -Type Symmetric -Usage Sign -Value $newClientSecret New-MsolServicePrincipalCredential -AppPrincipalId $clientId -Type Symmetric -Usage Verify -Value $newClientSecret New-MsolServicePrincipalCredential -AppPrincipalId $clientId -Type Password -Usage Verify -Value $newClientSecret This entry was posted in Software Development and tagged Microsoft SharePoint on December 2, 2016 by robgarrett . NodeJS Development Environment w/SharePoint Framework Support Unless you’ve been hiding under a rock recently (or not interested in SharePoint development), you’ve probably heard/read the recent announcement about the preview release of the SharePoint Framework. You can...

robgarrett.com Whois

"domain_name": "ROBGARRETT.COM", "registrar": "Domain.com, LLC", "whois_server": "whois.domain.com", "referral_url": null, "updated_date": [ "2020-06-21 11:49:11", "2020-06-21T11:49:11" ], "creation_date": [ "2000-07-06 18:53:27", "2000-07-06T18:53:27" ], "expiration_date": [ "2021-07-06 18:53:27", "2021-07-06T18:53:27" ], "name_servers": [ "NS1.AFRAID.ORG", "NS2.AFRAID.ORG", "NS3.AFRAID.ORG", "NS4.AFRAID.ORG", "ns1.afraid.org", "ns2.afraid.org", "ns3.afraid.org", "ns4.afraid.org" ], "status": [ "clientTransferProhibited https://icann.org/epp#clientTransferProhibited", "clientUpdateProhibited https://icann.org/epp#clientUpdateProhibited" ], "emails": [ "compliance@domain-inc.net", "support@dotster-inc.com" ], "dnssec": "unsigned", "name": "REDACTED FOR PRIVACY", "org": "REDACTED FOR PRIVACY", "address": "REDACTED FOR PRIVACY", "city": "REDACTED FOR PRIVACY", "state": "Maryland", "zipcode": "REDACTED FOR PRIVACY", "country": "US"