by community-syndication | Apr 7, 2009 | BizTalk Community Blogs via Syndication
Saravana Kumar has just published the BizTalk Blog Docs site on BizTalk 24/7.
This is a really cool looking new resource which aggregated some of the popular blog articles and presents them in a structured format which is similar to the MSDN Library
http://blogdoc.biztalk247.com/default.aspx
My profile on BizTalk Blog Docs is: http://blogdoc.biztalk247.com/michael-stephenson
by community-syndication | Apr 7, 2009 | BizTalk Community Blogs via Syndication
If you ever receive the following error,
“Error: btsdeploy is not recognized as an internal or external command”
Reason: This usually happens if the BizTalk server is not able to recognize the BTSDeploy.exe command, this can happen if you had recently installed the BizTalk server and have not restarted the machine.
Solution: restart the machine after successful BizTalk installation
Note: BTSDeploy is deprecated and has been replaced by BTSTask with the new release, but is included to support scripts that administrators have developed for previous versions of BizTalk Server.
by community-syndication | Apr 5, 2009 | BizTalk Community Blogs via Syndication
I ran into an issue working with the AWESOME MUrl sample trying to reach Twitter from inside Intellipad (running in “MUrl mode”). I’m doing this post for the benefit of others that may run also into this, there are actually two solutions
If you haven’t seen MUrl in action, please see my previous post about it and do check it out. Bottom line is that the sample is a DSL (written in “M” of course) for doing REST client requests, and “MUrl mode” lets you do those requests right from inside Intellipad. Super cool
Where I ran into an issue was that although I was able to query Twitter no problem with MUrl from Intellipad, when I tried posting I would get an “Expectation Failed” error message. I was somewhat amused that somehow it seemed that I was not living up to some service’s expectations 🙂 but mostly I was annoyed that I could not do this. After a bit of looking around, I found this post that explained what was going on.
I made the code change to the MUrlRuntime.cs file as shown below:
Alternatively, you could make the equivalent change by adding this to the ipad.exe.config:
<system.net>
<settings>
<servicePointManager expect100Continue=”false” />
</settings>
</system.net>
Technorati Tags: Oslo,M,MUrl,DSL
(for the benefit of people using search engines, other text in the error message was “Expect: 100-continue”, and some text from Twitter saying “we only allow the 100-continue expectation”)
by community-syndication | Apr 4, 2009 | BizTalk Community Blogs via Syndication
[Source: http://geekswithblogs.net/EltonStoneman]
The WCF message formatter interfaces IClientMessageFormatter and IDispatchMessageFormatter let you intercept WCF messages on the client or service side at the point of serialization and deserialization. They’re useful injection points as they give you access to the input or output parameter values of the service call, and to the incoming or outgoing WCF Message object. The formatters allow you to inspect or modify the message content or headers, using the call parameters to drive your logic.
Formatters need to be applied as operation behaviors, so there’s no direct way to add them via binding configurations – typically they’re added programmatically to the client channel, or to the service as attributes on the operation contract. But if your requirements are to add the same formatter to every operation and you want the flexibility of the configuration model, you can add formatters by piggybacking onto other behaviors which can be specified in configuration – IEndpointBehavior on the client and IServiceBehavior on the service:
(more detail on the data signature project in a future post).
Client Side
DataSignatureOperationBehavior.ApplyClientBehavior adds a DataSignatureClientFormatter to a single client operation:
public void ApplyClientBehavior(OperationDescription operationDescription, ClientOperation clientOperation)
{
DataSignatureClientFormatter formatter = new DataSignatureClientFormatter();
formatter.OrginalFormatter = clientOperation.Formatter;
clientOperation.Formatter = formatter;
}
Adding the formatter to one operation cannot be specified in client-side configuration. However the DataSignatureOperationBehavior can be added to every client operation in an endpoint using IEndpointBehavior.ApplyClientBehavior. DataSignatureEndpointBehavior adds the client formatter to every operation, by using the existing operation behavior:
public void ApplyClientBehavior(ServiceEndpoint endpoint, ClientRuntime clientRuntime)
{
foreach (OperationDescription operation in endpoint.Contract.Operations)
{
operation.Behaviors.Add(new DataSignatureOperationBehavior());
}
}
The endpoint behavior is exposed in the client configuration mode by extending BehaviorExtensionElement, so the DataSignatureFormatter can be added to every operation in an endpoint by configuring the DataSignatureEndpointBehavior:
<client>
<endpoint address=“http://localhost/x.y.z.svc”
binding=“basicHttpBinding“ bindingConfiguration=“BasicHttpBinding_ICustomerService“
behaviorConfiguration=“dataSignatureBehavior“
contract=“CustomerService.ICustomerService“ name=“BasicHttpBinding_ICustomerService“ />
</client>
<behaviors>
<endpointBehaviors>
<behavior name=“dataSignatureBehavior“>
<dataSignatureBehavior />
</behavior>
</endpointBehaviors>
</behaviors>
<extensions>
<behaviorExtensions>
<add
name=“dataSignatureBehavior”
type=“Sixeyed.OptimisticLockingSample.ServiceModel.Behaviors.DataSignatureEndpointBehavior/>
</behaviorExtensions>
</extensions>
Service Side
The service stack is the parallel of the client side – DataSignatureDispatchFormatter is added via an operation behavior using DataSignatureOperationBehavior.ApplyDispatchBehavior:
public void ApplyDispatchBehavior(OperationDescription operationDescription, DispatchOperation dispatchOperation)
{
DataSignatureDispatchFormatter formatter = new DataSignatureDispatchFormatter();
formatter.OrginalFormatter = dispatchOperation.Formatter;
dispatchOperation.Formatter = formatter;
}
Again this behavior is not available in the service configuration model, but it can be added to every operation in the service using IServiceBehavior.ApplyDispatchBehavior, as is done in DataSignatureServiceBehavior:
public void ApplyDispatchBehavior(ServiceDescription serviceDescription, System.ServiceModel.ServiceHostBase serviceHostBase)
{
foreach (ServiceEndpoint endpoint in serviceDescription.Endpoints)
{
foreach (OperationDescription operation in endpoint.Contract.Operations)
{
operation.Behaviors.Add(new DataSignatureOperationBehavior());
}
}
}
This behavior also extends BehaviorExtensionElement so it can be configured, adding the dispatch formatter will be added to every operation in the service:
<services>
<service behaviorConfiguration=“dataSignatureBehavior”
name=“Sixeyed.OptimisticLockingSample.Services.CustomerService“>
<endpoint address=“” binding=“basicHttpBinding“ contract=“Sixeyed.OptimisticLockingSample.Services.ICustomerService”
bindingNamespace=“http://Sixeyed.OptimisticLockingSample/2009“/>
</service>
</services>
<behaviors>
<serviceBehaviors>
<behavior name=“ dataSignatureBehavior “>
<serviceMetadata httpGetEnabled=“true“/>
<serviceDebug includeExceptionDetailInFaults=“true“/>
<dataSignatureBehavior/>>
</behavior>
</serviceBehaviors>
</behaviors>
<extensions>
<behaviorExtensions>
<add
name=“dataSignatureBehavior”
type=“Sixeyed.OptimisticLockingSample.ServiceModel.Behaviors.DataSignatureServiceBehavior/>
</behaviorExtensions>
</extensions>
Additionally, the DataSignatureOperationBehavior extends Attribute, so for finer-grained control the declarative approach is available using the same stack.
by community-syndication | Apr 4, 2009 | BizTalk Community Blogs via Syndication
I had a chance to do a talk on profiling code for Microsoft’s “Build
Your Skills” event on March 24th in St. Louis (and March 31st in Minneapolis).
I mentioned a utility I’d written for cleaning up performance session files that are
generated from URLs (so that only DLL/EXE remain.) You can find that here.
In addition, you can find the slides here.
All sorts of fun details on profiling terminology, types of profiles, resigning assemblies
(or turning off assembly verification), etc. I’m hoping to record a screen cast
of the talk soon…
Fantastic turnout at both locations, and really great questions – thanks to those
who attended!