Things hard and not so hard.... RSS 2.0
# Monday, April 29, 2013

While looking into purchasing MSDN licenses for a client here’s what I found:

For the US:

image

 

Now when you change the drop down from US to Australia we get these prices (given that $AUD 1 = (approx) $USD 1

image

So for e.g. take a MSDN – VS.NET Test.

Aussie Dollar = $3,460   US= $2,170 which equates to $AUD 1 = $USD 0.627

this is what happens when living in a 3rd world country…. Smile - absolutely outrageous.

Monday, April 29, 2013 10:27:38 AM (AUS Eastern Standard Time, UTC+10:00)  #    Comments [0] -
.NET Developer | Dev | General
# Friday, January 11, 2013

Hi folks, I came across a very handy little tip the other day that works with *any* set of Batch Commands that you want to run sequentially.

Now before you jump out and tell me “Mick, what are you doing?! Powershell is where it’s at!”….yes yes I know. I’ve half the guys at the office telling me that too.

So onto the goodness on this one:

The key is

<cmd> && <cmd>
or
<cmd> & <cmd>

Hold the Phone - we have an UPDATE (from a commenter upon whom I owe a beer)

----- Update ----

Using a single ampersand achieves a similar result but with a slight difference:

* single (&): run command 1 then command 2
* double (&&): run command 1, and if it returns success then run command 2

So in your example, if the print spooler is already stopped then "net stop" will fail and "net start" will not be run. If you use a single ampersand instead, then "net start" will still be run.

------ End of Update -----

e.g.

net stop “Print Spooler” && net start “Print Spooler”

 

image

Friday, January 11, 2013 3:28:28 PM (AUS Eastern Daylight Time, UTC+11:00)  #    Comments [2] -
Dev | Events | Tips
# Tuesday, November 20, 2012

While on SharePoint 2013 training we came across all the different ways of calling SharePoint and it’s data through JavaScript, JQuery and all the bits.

It was all looking good until we needed to update sharepoint – e.g. a list, a list item etc.

The MS Course notes say – “if you’re in SharePoint you can get the Form Digest from the main SharePoint Form….”

 

What about if you’re running outside of SharePoint (a Provider App – they now call it, or Cloud Hosted…depending on who wrote the help article)

 

The answer in the notes is… go and make an old fashion call to Sites.asmx SOAP WebService…. from client side javascript this is going to be a feat.

….

The Answer – make a REST call to get the ‘Context Info’ first, then you’ll have the form digest and you’re done.

http://msdn.microsoft.com/en-us/library/fp142386(office.15).aspx#bk_synchronize (just at the top of this page)

 

Table 1. SPContextWebInformation structure initialization properties

Property

Description

webFullUrl

Gets the server-relative URL of the nearest site.

siteFullUrl

Gets the server-relative URL of the root of the site collection that the site is contained within.

If the nearest web is the root of a site collection, then the value of the webFullUrl property is equal to the siteFullUrl property.

formDigestValue

Gets the server's request form digest.

LibraryVersion

Gets the current version of the REST library.

SupportedSchemaVersions

Gets the versions of the schema of the REST/CSOM library that are supported.

To access this information, use the /contextinfo operator. For example:

http://server/web/doclib/forms/_api/contextinfo

To increase security against cross-site scripting attempts, the /contextinfo operator accepts only POST requests.

Tuesday, November 20, 2012 3:43:32 PM (AUS Eastern Daylight Time, UTC+11:00)  #    Comments [0] -
Dev | SharePoint | 2013 | Tips
# Thursday, October 25, 2012

Great news – Jurgen Willis and his team have worked hard to bring Microsoft’s first V1.0 WF Workflow Hosting Manager.

It  runs both as part of Windows Server and within Azure VMs also. It also is used by the SharePoint team in 2013, so learn it once and you’ll get great mileage out of it.
(I’m yet to put it through serious paces)

Some links to help you out…

What is it?

WF Mgr 1.0 – Code Samples

 

The following main areas for WF improvements in .NET 4.5: (great MSDN magazine article)

  1. Workflow Designer enhancements
  2. C# expressions
  3. Contract-first authoring of WCF Workflow Services
  4. Workflow versioning
  5. Dynamic update
  6. Partial trust
  7. Performance enhancements

Specifically for WorkflowManager there’s integration with:

1. Windows Azure Service Bus.

So all in all a major improvement and we’ve now got somewhere serious to host our WF Services. If you’ve ever gone through the process of creating your own WF host, you’ll appreciate it’s not a trivial task especially if you want some deeper functionality such as restartability and fault tolerance.

but…. if you want to kick off a quick WF to be part of an install script, evaluate an Excel spreadsheet and set results, then hosting within the app, spreadsheet is fine.

Let’s go through installation:

Download from here

image

Workflow_Manager_BPA.msi = Best Practices Analyser.

WorfklowClient = Client APIs, install on machines that want to communicate to WF Manager.

WorkflowManager = the Server/Service Component.

WorkflowTools = VS2012 plugin tools – project types etc.

And we’ll grab the 4 or you can you the Web Platform Installer

image

 

The Workflow Client should install fine on it’s own (mine didn’t as I had to remove some of the beta bits that were previously installed).

Installing the Workflow Manager – create a farm, I went for a Custom Setting install below, just to show you the options.

image

image

As you scroll down on this page, you’ll notice a HTTP Port – check the check box to enable HTTP communications to the Workflow Manager.
This just makes it easier if we need to debug anything across the wire.

Select NEXT or the cool little Arrow->

On Prem Service Bus is rolled into this install now – accepting defaults.

image

Plugin your Service Accounts and passphrase (for Farm membership and an encryption seed).

Click Next –> to reveal….

image

As with the latest set of MS Products a cool cool feature is the ‘Get PowerShell Commands’ so you can see the script behind your UI choices (VMM manager, SCCM 2012 has all this right through). BTW – passwords don’t get exported in the script, you’ll need to add.

Script Sample:

# To be run in Workflow Manager PowerShell console that has both Workflow Manager and Service Bus installed.

# Create new SB Farm
$SBCertificateAutoGenerationKey = ConvertTo-SecureString -AsPlainText  -Force  -String '***** Replace with Service Bus Certificate Auto-generation key ******' -Verbose;


New-SBFarm -SBFarmDBConnectionString 'Data Source=BTS2012DEV;Initial Catalog=SbManagementDB;Integrated Security=True;Encrypt=False' -InternalPortRangeStart 9000 -TcpPort 9354 -MessageBrokerPort 9356 -RunAsAccount 'administrator' -AdminGroup 'BUILTIN\Administrators' -GatewayDBConnectionString 'Data Source=BTS2012DEV;Initial Catalog=SbGatewayDatabase;Integrated Security=True;Encrypt=False' -CertificateAutoGenerationKey $SBCertificateAutoGenerationKey -MessageContainerDBConnectionString 'Data Source=BTS2012DEV;Initial Catalog=SBMessageContainer01;Integrated Security=True;Encrypt=False' -Verbose;

# To be run in Workflow Manager PowerShell console that has both Workflow Manager and Service Bus installed.

# Create new WF Farm
$WFCertAutoGenerationKey = ConvertTo-SecureString -AsPlainText  -Force  -String '***** Replace with Workflow Manager Certificate Auto-generation key ******' -Verbose;


New-WFFarm -WFFarmDBConnectionString 'Data Source=BTS2012DEV;Initial Catalog=BreezeWFManagementDB;Integrated Security=True;Encrypt=False' -RunAsAccount 'administrator' -AdminGroup 'BUILTIN\Administrators' -HttpsPort 12290 -HttpPort 12291 -InstanceDBConnectionString 'Data Source=BTS2012DEV;Initial Catalog=WFInstanceManagementDB;Integrated Security=True;Encrypt=False' -ResourceDBConnectionString 'Data Source=BTS2012DEV;Initial Catalog=WFResourceManagementDB;Integrated Security=True;Encrypt=False' -CertificateAutoGenerationKey $WFCertAutoGenerationKey -Verbose;

# Add SB Host
$SBRunAsPassword = ConvertTo-SecureString -AsPlainText  -Force  -String '***** Replace with RunAs Password for Service Bus ******' -Verbose;


Add-SBHost -SBFarmDBConnectionString 'Data Source=BTS2012DEV;Initial Catalog=SbManagementDB;Integrated Security=True;Encrypt=False' -RunAsPassword $SBRunAsPassword -EnableFirewallRules $true -CertificateAutoGenerationKey $SBCertificateAutoGenerationKey -Verbose;

Try
{
    # Create new SB Namespace
    New-SBNamespace -Name 'WorkflowDefaultNamespace' -AddressingScheme 'Path' -ManageUsers 'administrator','mickb' -Verbose;

    Start-Sleep -s 90
}
Catch [system.InvalidOperationException]
{
}

# Get SB Client Configuration
$SBClientConfiguration = Get-SBClientConfiguration -Namespaces 'WorkflowDefaultNamespace' -Verbose;

# Add WF Host
$WFRunAsPassword = ConvertTo-SecureString -AsPlainText  -Force  -String '***** Replace with RunAs Password for Workflow Manager ******' -Verbose;


Add-WFHost -WFFarmDBConnectionString 'Data Source=BTS2012DEV;Initial Catalog=BreezeWFManagementDB;Integrated Security=True;Encrypt=False' -RunAsPassword $WFRunAsPassword -EnableFirewallRules $true -SBClientConfiguration $SBClientConfiguration -EnableHttpPort  -CertificateAutoGenerationKey $WFCertAutoGenerationKey -Verbose;

 

Upon completion you should see a new IIS Site…. with the ‘management ports’ of in my case HTTPS

image

 

Let’s Play Smile

Go and grab the samples and have a play – make sure you run the samples as the user you’ve nominated as ‘Admin’ during the setup – for now.

Thursday, October 25, 2012 3:06:11 PM (AUS Eastern Standard Time, UTC+10:00)  #    Comments [0] -
Async | Azure | Integration | ServiceBus | BizTalk | 2010 | 2010 R2 | Dev
# Thursday, August 30, 2012

I recently ran into an interesting one while building some InfoPath forms for SP2010/2013 forms services.

I wanted to return some Rich Text (XHTML) fields back from a WCF WebService call.

I was at the point as a developer, where I couldn’t even say ‘Works on my machine…’.

The problem was – no matter what I tried, I would always have *plain text* and no ‘richness’ of the Rich Text. Didn’t work for me.

So I have:

1) a basic WCF Web service – running on my dev environment.

2) an InfoPath Form that makes the call and displays the results.

The WCF Service:

image

This is the field that I eventually want to return as RichText to InfoPath.

Here’s the Service Method code (which basically goes into a file and returns back a list of clauses) – just focus on the CONTENT = …GetXHTMLRichText(…)

image

 

InfoPath and Returning a RichTextField
2 things need to happen for this to work.

1. When InfoPath adds the WCF Service to the form, it needs to ‘detect’ the field correctly when it build the underlying schema.

image

You need (nb – ‘Content’ is my field name):
<xs:element minOccurs="0" name="Content" nillable="true">
                <xs:complexType mixed='true'>
                    <xs:sequence>
                        <xs:any minOccurs="0" processContents="lax" maxOccurs="unbounded" namespace="http://www.w3.org/1999/xhtml"></xs:any>
                    </xs:sequence>
                </xs:complexType>

</xs:element>

Note the namespace on the ANY element above – this is the winner to tell InfoPath that this is a richtext field.

2. When returning data via this field (in my case the ‘Content’ field), it needs to be in a certain shape, as in:
<Content xmlns=http://yournamespace>
    <span xmlns="http://www.w3.org/1999/xhtml">Rich text here</div>
</Content>


Your rich text content needs to be ‘wrapped’ for InfoPath to play nicely with it.

This was the purpose of my GetXMLRichText method as

image

 

The gotcha:

When I pointed InfoPath at my webservice and added a service reference I was getting back a SimpleType for the field and not a ComplexType/Rich Text field.

The WCF Service WSDL was ‘almost there’ but not close enough:
image

The Content field described in a ComplexType which is almost there, but not quite.

It’s missing the <xs:complexType mixed=’true’>…<xs:any namespace=’http://www.w3.org/1999/xhtml’ …/>. The rest were good.

The fix:

Cutting a long story short, the simplest way forward here was to simply edit the form components that InfoPath had built and correct the schema. Then reuse the form.

The form looks like this:

image

 

From the File->Publish->Export Source Files you can get to the source and edit the correct schema (XSD) file.

image
Close the form down in InfoPath (or you may even need to close InfoPath) to edit the Schema.

image

You may need to hunt through a few of them to find the right one. My file was GetKCCTerms12.xsd

Modify, save and close that file.

Right click on manifest.xsf –> Design to launch InfoPath and then select Save As to work with it as *.XSN form (*.xsn files are just CABs with all these files inside)

image

The final result as viewed from an InfoPath form – notice the bolding sent through.

Enjoy,

Mick.

Thursday, August 30, 2012 9:25:47 PM (AUS Eastern Standard Time, UTC+10:00)  #    Comments [0] -
.NET Developer | Dev | SharePoint | 2010 | Tips
# Monday, August 13, 2012

With Hyper-V now available on Win8 it's more important than ever.

VOTE here: https://connect.microsoft.com/WindowsServerFeedback/feedback/details/390443/hyper-v-needs-usb-support

The more votes...the more importance this issue has.

Let's get it in there.

p.s. I'm aware of the 'workarounds' after having to plug 183 usb devices into a virtual environment. Hours I'll never get back

Monday, August 13, 2012 7:59:38 PM (AUS Eastern Standard Time, UTC+10:00)  #    Comments [0] -
Dev | General | Tips
# Monday, May 28, 2012
Huge assortment of scripts for all the family on many many many different jobs....

http://gallery.technet.microsoft.com/ScriptCenter/

Note to self: Why didn't I come across this sooner??

Enjoy,

Mick.

Monday, May 28, 2012 5:03:50 PM (AUS Eastern Standard Time, UTC+10:00)  #    Comments [0] -
Dev | General | Tips
# Saturday, March 10, 2012

Easy but effective

<script type='text/javascript'>
var msg = "your big title goes here…";
msg = " ..... " + msg;pos = 0;
function scrollTitle() {
document.title = msg.substring(pos, msg.length) + msg.substring(0, pos); pos++;
if (pos > msg.length) pos = 0
window.setTimeout("scrollTitle()",300);
}
scrollTitle();
</script>

Saturday, March 10, 2012 3:12:07 PM (AUS Eastern Daylight Time, UTC+11:00)  #    Comments [0] -
.NET Developer | Dev | Tips
# Thursday, January 26, 2012

Recently there’s been an update to the ‘on-premise’ AppFabric for Windows Server.

Grab the update here - http://www.microsoft.com/download/en/details.aspx?id=27115 (runs on win7, 2008, 2008R2)

What’s new

I’m in the process of updating my components, but the majority of updates seems to be around caching and performance.

http://msdn.microsoft.com/en-us/library/hh351389.aspx

 

Read-Through/Write-Behind

This allows a backend provider to be used on the cache servers to assist with retrieving and storing data to a backend, such as a database. Read-through enables the cache to "read-through" to a backend in the context of a Get request. Write-behind enables updates to cached data to be saved asynchronously to the backend. For more information, see Creating a Read-Through / Write-Behind Provider (AppFabric 1.1 Caching).

Graceful Shutdown

This is useful for moving data from a single cache hosts to rest of the servers in the cache cluster before shutting down the cache host for maintenance. This helps to prevent unexpected loss of cached data in a running cache cluster. This can be accomplished with the Graceful parameter of the Stop-CacheHost Windows PowerShell command.

Domain Accounts

In addition to running the AppFabric Caching Service with the NETWORK SERVICE account, you can now run the service as a domain account. For more information, see Change the Caching Service Account (AppFabric 1.1 Caching).

New ASP.NET Session State and Output Caching Provider

New ASP.NET session state and output caching providers are available. The new session state provider has support for the lazy-loading of individual session state items using AppFabric Caching as a backing store. This makes sites that have a mix of small and large session state data more efficient, because pages that don't need large session state items won't incur the cost of sending this data over the network. For more information, see Using the ASP.NET 4 Caching Providers for AppFabric 1.1.

Compression

You can now enable compression for cache clients. For more information, see Application Configuration Settings (AppFabric 1.1 Caching).

Multiple Cache Client Application Configuration Sections

A new dataCacheClients section is available that allows you to specify multiple named dataCacheClient sections in an application configuration file. You can then programmatically specify which group of cache client settings to use at runtime. For more information, see Application Configuration Settings (AppFabric 1.1 Caching).

Thursday, January 26, 2012 10:14:06 AM (AUS Eastern Daylight Time, UTC+11:00)  #    Comments [0] -
.NET Developer | AppFabricServer | Azure | Integration | 2010 | 2010 R2 | Dev
# Monday, January 23, 2012

Hi folks, welcome to Monday…so I thought.

Here I was registering a message inspector which should take 5 mins tops.

Find the right config, make sure the .NET full assembly name is cool and away we go.

I wanted to use this guy from my custom WCF Adapter within BizTalk – so I needed my new message inspector to be seen by BizTalk.

So I used:

<add name="wcfMsgPropPromoter" type="Breeze.WCF.Extensions.BreezeMessagePromoteBehaviour,Breeze.WCF.Extensions,Version=1.0.0.0,Culture=neutral,PublicKeyToken=c2c8c7e827e9dd6a"/>

and added this guy to the <behaviorExtensions> element in the Machine.Config for .NET 4.0 x64/.NET 4.0 (& .NET 2.0 for good measure)

As if a scene from SpongeBob,… 3 hours later….

I had triple check GACs, caches, full assembly names etc…Scotty popped his head around and said “Oh yeah I had this one ages ago you need to use this…”

<add name="wcfMsgPropPromoter" type="Breeze.WCF.Extensions.BreezeMessagePromoteBehaviour, Breeze.WCF.Extensions, Version=1.0.0.0, Culture=neutral, PublicKeyToken=c2c8c7e827e9dd6a"/>

Can you spot the difference?

SPACES!!!!

Interestingly enough – this work is part of a .NET plugin I wrote for IIS 7.5 and to register the plugin you use “Breeze.WCF.Extensions.BreezeMessagePromoteBehaviour,Breeze.WCF.Extensions,Version=1.0.0.0,Culture=neutral,PublicKeyToken=c2c8c7e827e9dd6a"

NO SPACES!

My head hurts for a Monday…

Hopefully you reclaim the hours I’ve lost here.

Mick.

Monday, January 23, 2012 4:52:20 PM (AUS Eastern Daylight Time, UTC+11:00)  #    Comments [0] -
.NET Developer | 2010 | 2010 R2 | Dev | .NET Framework 4.5
# Wednesday, January 11, 2012

Hi folks, we’ve set a cracking pace into 2012 and are in need of an additional team member.

If you love technology, we love technology and I’d love to hear from you to be part of my team.

You will be stimulated, constantly thinking and challenged – azure, integration, biztlak, sql, windows phone 7 and many other technology areas you’ll be exposed to. Integration is all about the glue we use to achieve the result.

If you’re keen for a chat check out the blurb - http://www.breeze.net/about/jobs.aspx

Cheers,

Mick.

Wednesday, January 11, 2012 11:32:16 PM (AUS Eastern Daylight Time, UTC+11:00)  #    Comments [0] -
AppFabricServer | Azure | BizTalk | 2010 | Breeze | BET | Dev | General | Jobs
# Monday, December 12, 2011

Hi folks, as you may/may not have been aware these are the core corner stone technologies of the MS Integration Stack.

The teams have been busily plugging away and coming up with the new versions – 4.5 corresponding to .NET 4.5 framework.

Here’s some links that describe what’s new from MS Santa & his elves:

  1. What's New in Windows Communication Foundation 4.5
    1. New Items I found of note are:
      • New Service Transport Default values – keep an eye on these.
      • Improvements from VS.NET 2011 – validation , better intellisence support.
      • Streaming improved – true async (yay!)
      • WebSocket support – through NetHttp(s)Binding
      • Single WSDL file generation with ‘?singleWSDL’ (which is pretty handy)
      • Self hosted + II hosted allow you to get to ServiceHost from code for dynamic configuration.
      • Binary Encoder supports compression!! – this is generally gzip compression.
      • My personal favourite – UDP support
  2. What's New in Windows Workflow Foundation in .NET 4.5
    1. New Items of note are:
      • New Activites – NoPersistScope (possible previously but we needed to write code)
      • WF Designer improvements – several here, but the ‘Outline view’ looks to be easier to work with.
      • C# Expressions – where’s the F# ones Sad smile ??
      • Designer Annotations – add your own comments to keep control of the jungle that is built.
      • WF Versioning – use WorkflowIdentity & DefinitionIdentity to define the version. WorkflowServiceHost supports multiple versions of the same WF. All pretty cool.
      • WF Designers can still be rehosted – I’ve used that many a place.
      • Contract First Development – ticks the boxes.
    2. WF Rules – still didn’t make the cut. There is a sample for WF4 using a custom Activity calling back to WF 3.5 Policy4 it’s called. It uses ‘interop’ back to WF3.5 and is found here - http://msdn.microsoft.com/en-us/library/dd797584(v=VS.100).aspx
      1. Will have to check out perf in this new land on these rules.
  3. Async CTP – while this didn’t make the ‘whats new’ list, it certainly does deserve a mention here.
    Over the last year I’ve built some pretty serious F# projects, and F# has the async support through and through the language. After over coming the challenge of learning it, the Async functionality is absolutely brilliant!!! F# does a great job in being able to turn a non-async chunk of code/method/class into an async one with by using the keyword async and a !. It’s straight forward from that aspect.

    It’s great to see the C# & VB.NETs being able to use the same fundamentals (albeit not as slick IMO Winking smile). – see a previous POST - http://blogs.breezetraining.com.au/mickb/2011/04/26/EasierAsyncProgrammingComingToCVBSoon.aspx

    As developers we sit here and say – what do I need this for? My code runs fine as it….and yes for the most part of what we do on our machine it does. This technology really comes into it’s own when you want consistent throughput from a solution with 1 person or 10000 concurrent people using it. That’s the difference.

    To use it:
    1. Get VSNET 2011 (as it requires a new compiler)
    2. Use ASYNC CTP (refresh3) with VSNET2010 SP1
  4. Check it out from here - http://msdn.microsoft.com/en-us/vstudio/gg316360
Monday, December 12, 2011 12:00:52 PM (AUS Eastern Daylight Time, UTC+11:00)  #    Comments [0] -
.NET Developer | Async | BizTalk | Dev | .NET Framework 4.5
Archive
<May 2013>
SunMonTueWedThuFriSat
2829301234
567891011
12131415161718
19202122232425
2627282930311
2345678
Blogroll
 AppFabric CAT
AppFabric Windows Server Customer Advisory Team - New Blog.
[Feed] BizTalk 2006 - Windows SharePoint Services adapter
BizTalk 2006 Sharepoint adapter!!
 Breeze SharePoint 2010 Bootcamp
Breeze SharePoint 2010 Bootcamp
[Feed] BTS 2006 R2/EDI
[Feed] Chris Vidotto (MS BTS Legend)
Needs no intro....
 Mark Daunt
BTS/SPS/.NET GURU!!!
About the author/Disclaimer

Disclaimer
The opinions expressed herein are my own personal opinions and do not represent my employer's view in any way.

© Copyright 2013
Breeze
Sign In
Statistics
Total Posts: 582
This Year: 17
This Month: 0
This Week: 0
Comments: 270
All Content © 2013, Breeze