Biztalk wcf Adapter
Hello Everyone, Actually i want to use WCF-Sql adapter for that i already install WCF-LOB adpater , but still in Visual studio i am getting error "Add Adapter service reference is not supported".
Hi,
Since you have installed WCF-LOB Adapter pack.You can select WCF-Custom from the adapter and select SQL binding from the bindings tab and use it.
Similar Messages
-
How to send EDI from WCF adapter to WCF service
Hi,
1. I have created an orchestration which is published as WCF service.
2. I have created an orchestration which receives an XML from WCF client and process it.
3. I have created a WCF dynamic send port.
Problem: From this dynamic send port, I want to send EDI file to a WCF service that will receive this EDI file. How can I achieve this. Below are my concerns:
-> For creating this WCF service, I need to know the contract of Biztalk WCF adapter which sends EDI file.
Thanks ...Hi,
How can we create WCF service to receive the EDI sent by the BTS. What contract should be used for receiving this EDI file in WCF service.
What changes have to be made in the orchestrations to send the EDI file to the WCF send Dynamic port. Below is the code i am using.
EDIOutboundPort(Microsoft.XLANGs.BaseTypes.Address)="URL Address";
EDIOutboundPort(Microsoft.XLANGs.BaseTypes.TransportType)="WCF-basicHttp";
Please correct me if i am wrong
Thanks
"How can we create WCF service to receive the EDI sent by the BTS. What contract should be used for receiving this EDI file in WCF service" - This is two different questions.
"How can we create WCF service to receive the EDI sent by the BTS" - Using BizTalk WCF Services Publishing Wizard, the wizard would ask for the "Create BizTalk receive locations in the following application " for creating
the receive location for the message published to the exposed WCF service. Through this receive port/location, the service would receive the message.
In this case, I am not sure why do you want to expose the Orchestration as WCF Service when you want to send message to this Orchestration/WCF service (which after converting from Orch) through another orchestration. You could either use call/start orchestration
to send message from one to another.
"What contract should be used for receiving this EDI file in WCF service" - may be this question is not correct. You have created a Orchestration which you exposed as WCF service. So while creating the Orch you know the type of message this Orchestration
is bound to, so use the same contract. Or as mentioned in my earlier reply, use "Consume WCF wizard" to consume the WCF service which would create the web message for you.
If this answers your question please mark it accordingly. If this post is helpful, please vote as helpful by clicking the upward arrow mark next to my reply. -
WCF Basic Http Send Adapter Observation (BUG in WCF Adapter ?)
Hi,
I have a request response WCF Basic Http send adapter with URL say http://dds.testservice.com/service
I send a request and get a response in my orchestration. Everything works fine.
I have a scope around the send receive shape in orch to catch excpetion of service call.
To test this I changed the URL to http://dds.testservice.com/service1 and I got the exception in orch and caught.
But if URl is changed to http://dds.testservice.com1/service i.e I am putting invalid server name . Note the 1 after com.
In this scenario the WCF Send adapter remains in Active state for ever till terminated.
Why is this behaving this way. How will orchestration ever know if the send failed if its always in active state and no response sent back to catch block.
Is it a bug in BizTalk WCF Adapter ?
Regards
Ritu Raj
When you see answers and helpful posts,
please click Vote As Helpful, Propose As Answer, and/or Mark As AnswerWhat you're experiencing is not unexpected.
The server name and the service path are completely different and, technically, have nothing to do with each other. They are resolved separately, and in different places.
"service1" is failing immediately because the host is getting the request but, not recognizing "service1" is returning an error immediately.
"*.com1" takes much longer to fail to the Orchestration because of the stack of timeouts and default retries in the Send Port and IP stack.
So, no, it is not a bug. -
Biztalk 2009 with WCF adapter running on 64 bit
Hi experts,
I'm running a wcf adapter 64 bit send handler/host on biztalk 2009. Will it work? or does it require the adapter to be configured on 32 bit?The WCF bindings are supported in 64-bit Host Instances.
-
Hi All,
This is my first time attempting to use the SQL WCF adapter with BizTalk, so I installed it after installing the SDK, everything seems fine, when I go to the project ==> Add generated items ==> Add Adapter MetaData
I can now see the option for the WCF-SQL adapter in addition to the SQL option. however when I select it and try to continue I get this error
unable to display adapter user interface
Could not load file or assembly microsoft.servicemodel.channels.tools.biztalkextension, version 3.0.0.0
and that it could not find the file
What should I do? Thanks in advanceIf you want to use WCF SQL Adapter you have to generate metadata by add generated items -> Consume adapter services and then select the WCF Custom adapter and select SQL binding. If you want to use the non-WCF adapter then you can select add adapter metadata which you are doing currently.
The assembly which you have mentioned is in the following path.
{Installation Folder}\Tools\Microsoft.ServiceModel.Channels.Tools.BizTalkExtension.dll
Check that the assembly is installed correctly. This is the Consume Adapter Service BizTalk Project Add-In for Visual studio. You can check and verify the installation assemblies from this link http://download.microsoft.com/download/9/0/d/90d3fc09-de48-4d83-8147-e8a08275c255/Readme.htm
If it still doesn't work re-install the WCF LOB adapter SDK again.
Abdul Rafay - MVP & MCTS BizTalk Server
blog: http://abdulrafaysbiztalk.wordpress.com/
Please mark this as answer if it helps. -
I have a BizTalk app up and running that is currently using the WCF-BasicHttp Adapter. It's currently using only Message security using the UserName credential type and that is all working fine.
Things have since changed, we are now required to accept Client Certificates at the Transport (IIS) level for authorization of the service and still continue to use Message security for authentication into the service.
After much pain and searching, I was able to get this to work in a NON-BizTalk WCF environment basing my config of bits of this
this post and ended up with the following customBinding configuration:
<customBinding>
<binding name="CustomCDARequestEndpointBinding">
<textMessageEncoding messageVersion="Soap11" />
<security authenticationMode="UserNameOverTransport" />
<httpsTransport requireClientCertificate="true" />
</binding>
</customBinding>
This resulted in a WCF client customBinding as such:
<customBinding>
<binding name="CDARequestEndpoint">
<security defaultAlgorithmSuite="Default" authenticationMode="UserNameOverTransport"
requireDerivedKeys="true" includeTimestamp="true" messageSecurityVersion="WSSecurity11WSTrustFebruary2005WSSecureConversationFebruary2005WSSecurityPolicy11BasicSecurityProfile10">
<localClientSettings detectReplays="false" />
<localServiceSettings detectReplays="false" />
</security>
<textMessageEncoding messageVersion="Soap11" />
<httpsTransport requireClientCertificate="true" />
</binding>
</customBinding>
</bindings>
<behaviors>
<endpointBehaviors>
<behavior name="ohBehave">
<clientCredentials useIdentityConfiguration="false">
<clientCertificate findValue="6D0DBF387484B25A16D0E3E53DBB178A366DA954" storeLocation="CurrentUser"
x509FindType="FindByThumbprint" />
</clientCredentials>
</behavior>
</endpointBehaviors>
</behaviors>
This works perfectly fine in a NON-BizTalk environment and it seems to be the critical piece of configuration is the
<httpsTransport requireClientCertificate="true" />
element.
The problem is, no matter what I try, I cannot find a similar setting in the BizTalk WCF-Custom/customBinding configuration anywhere.
Does anyone know what my options are here?
Can I edit the web.config directly?
Is there another extension I can add to achieve the same effect in the BizTalk GUI?
Can I code something in the orchestration to manually setup this receive location the why I'm proposing?
I'm hoping someone out there knows more about this.Because the WCF-BasicHttp Adapter only surfaces certain properties, you can't use it for your purpose.
Instead:
Start with the WCF-Custom Adapter
BindingType = customBinding
Delete httpTransport
Add httpsTransport (you will then see requireClientCertificate)
Add the clientCredentials Behavior and set your options and credentials in the Credentials tab. -
Biztalk: WCF receive String
Hello Experts,
In Biztalk using WCF i am receiving string - publish orchestration as webservice
following is template of the message - in this message i am receiving string node inside body
is there any way in WCF adapter, i can get only data inside string node, not with string node
<Envelope>
<Header></Header>
<Body>
<string xmlns="http://schemas.microsoft.com/2003/10/Serialization/">
</string>
</Body>
</Envelope>
ThanksThanks,
is there any link or article you suggest,
There's really not much to it, just those two binding elements. Give it a try, you'll see it's pretty easy.
If you want to use an Isolated Receive Host, such as IIS, you can run the Wizard and pick any schema to publish, it's never actually checked, just don't include the meta-data.
Hello BoatSeller,
i am actually publish orchestration as WCF Service..but i am sorry i did not understand on how to create simple WCF Http post using custombinding..
i am still learning..would really really appreciate if you can provide little more info on this..
thanks a lot for your help..
Thanks
please Mark as the Answer, If this answers your question. If this post is helpful, please vote as helpful. -
BizTalk SAP-adapter performance issue
We have 1 server BizTalk installation:
Windows server 2012 R2 STD EN, BizTalk 2013 R2.
4 cores, 8GB RAM, 100 HDD.
We testing possibility of exchanging data between BizTalk (SAP adapter) and SAP using RFC procedures. For testing purposes in SAP was created custom RFC procedure, which takes list of IDOC types and total amount of IDOC’s as input parameters
and gives IDOCS in table format as output. During the test’s we noticed low performance:
Receiving of 100 IDOC (~22MB) takes about 7 minutes.
Receiving of 10 IDOC (~2MB) - takes about 10 seconds.
Process of getting data was tracked using Performance Monitor with counters:
Memory page faults / second;
CPU %Time usage (Total)
Network interface total bytes / second
During the process of receiving data from SAP, we saw:
Network activity short leap
(about 5% of total receive process duration).
Activity of «page faults / second» showed the same behavior.
After network activity and «page faults / second» decreased, CPU activity raised and was on that level until data receive process was finished (about 95% of total receive process duration).
After that process of receiving was finished.
Chart with counters described above for receiving 30 IDOC’s shown below:
We tried same scenario on BizTalk server 2013 R2 and get same result.
Also, we tested getting 10-100 IDOC's and noticed receive time dependency from total amount of row's in responce:
Such performance is unacceptable for us.
Getting same data through WCF-SQL is about 100 times faster.
After deep trace analysis, we discovered that most time consuming operation during time is:
[1]1108.0214::02/04/2015-10:24:39.975 [CSharp]:[Wcf] WcfMarshaller.CreateBizTalkMessageStream:
UseBodyElement
[0]1108.0214::02/04/2015-10:25:05.650 [CSharp]:[Wcf] BizTalkDeleteTxn.BizTalkDeleteTxn
So, theoretically increasing batch treshold should help. But it didnt help (we increased it to 102400 KB).
Anyone has same issue?
Any ideas about fixing the problem?Such performance is unacceptable for us.
Getting same data through WCF-SQL is about 100 times faster.
After deep trace analysis, we discovered that most time consuming operation during time is:
[1]1108.0214::02/04/2015-10:24:39.975 [CSharp]:[Wcf] WcfMarshaller.CreateBizTalkMessageStream:
UseBodyElement
[0]1108.0214::02/04/2015-10:25:05.650 [CSharp]:[Wcf] BizTalkDeleteTxn.BizTalkDeleteTxn
So, theoretically increasing batch treshold should help. But it didnt help (we increased it to 102400 KB).
Anyone has same issue?
Any ideas about fixing the problem?
HI,
Thanks for sharing your experience with us.
If you cannot determine your answer here or on your own, consider opening a support case with us. Visit this link to see the various support options that are available to better meet your needs:
http://support.microsoft.com/default.aspx?id=fh;en-us;offerprophone
Best regards,
Angie
We are trying to better understand customer views on social support experience, so your participation in this interview project would be greatly appreciated if you have time. Thanks for helping make community forums a great place.
Click
HERE to participate the survey. -
Hi,
I am very new to BizTalk.
As per my knowledge we can connect to SQL server DB by using SQL Adapter.
But can we use SQL Adapter in BizTalk for connecting to other databases like Oracle, Sybase etc.?
Thanks in advance!!
Regards,
RenuCheck the BizTalk Adapter Pack for connecting to Oracle
http://social.technet.microsoft.com/wiki/contents/articles/5118.biztalk-server-adapter-pack-2010.aspx
For sybase there is an ODBC adapter
http://www.twoconnect.com/BizTalkProducts/ODBCAdapter.aspx
hth /Peter -
Actually my WCF Custom adapter is pointing to my local machine SQL now ineed to point to my Dev environment the same send Port
like my local machines URL is mssql://HDUPEDEVBIZ\Biztalk/AfmsDevice?
i have to change now to mssql://HDUPEDEVSQLDB02\INSTANCE_1/AfmsDevice?
i get an error saying that its not a well formed URI
Any suggestions on this?mssql://HDUPEDEVSQLDB02/INSTANCE_1/AfmsDevice?
its: mssql://[ServerName]/[InstanceName if any]/[DatabaseName]?
Also remember that once you change from a local DB to a DB on another machine, MSDTC needs to be running
on both instances (Biztalk and DB), if you have UseAmbientTransaction set to true.
Morten la Cour -
I'm trying to process a file using wcf custom adapter 64 bit on Biztalk 2009. The sql server that is receiving this file is SQL server 2005 enterprise edition SP 3 and 32 bit machine.
I'm dropping the file in the receive location and it gets picked up but then the file disappears and no row count in sql inbound table.
I checked the application log on Biztalk and SQL server and there are no errors.
Any idea?Yes it will make sure your new server is picking up the file.
Once done, follow the steps bellow:
1. Go to your receive location and point URI to new location
2. Go to your receive port --> Go to tracking tab and enable all 4 tracking options
3. Restart the host instances
4. Place the file in the new receive location (file should disappear)
5. Now go to BizTalk Group Hub --> Tracked Message Events
6. There should be two rows against your receive port (one for Receive and one for Send)
By double clicking the rows you can see what was received on the port and what was sent by this port.
At this stage, you will find your message in Active Messages or Suspended Messages.
You can also monitor the Event Viewer for errors or warnings meanwhile.
BizTalk Specialist -
BizTalk 2009 SQL WCF Adapter Losing Messages? AKA TypedPolling Not Working
Can anybody help me with this amazingly frustrating issue? Firstly, the basiscs. I'm using BizTalk 2009 Standard Edition hosted on Windows Server 2008
Standard (64 bit). The BizTalk databases are stored on a seperate server, running SQL Server 2008 on Windows Server 2008 Enterprise (64 bit).
I have configured a WCF SQL adapter to poll (using TypedPolling) a SQL 2008 database which in turn activates a relatively simple orchestration. The problem
is that the orchestration does not get executed at the specified polling intervals. I have several other similar polling adapters in my application that work
as expected. Generally it will run correctly once or twice after enabling/disabling the receive location or restarting the host instance. But after that it
is completely erratic. If I have it set to run every hour (3600 secs), it might complete succssfully once or twice a day at seemingly random times. On other
days it might run seven or eight times during a day.
I've spent heaps of time reading blogs and changing various settings on my receive location and have really run out of ideas. I've profiled SQL Server and it
seems that the WCF SQL adapter does hit the database at each polling period as specified, using both the polledDataAvailableStatement and the
pollingStatement. Data is always returned by these queries (a small amount - around 30 records), but they just don't seem to get to the message box. No
errors are ever reported in the Event Log.
I use a stored procedure for determining if data is available and for returning data. They are both effectively the same statement, one returns a count
whilst the other returns the data. The queries are using cross server joins as you can see below. Although I do no updates, it seems that I have to run the
receive location with AmbientTransactions turned on. Turning them off just results in a SQL Timeout exception. I don't understand why this is and would be
grateful if someone could explain.
Data Available (contained in a stored proc):
SELECT COUNT(*)
FROM [LMNZLSQL002\AX].[LMNZ_AX_LIVE].[dbo].[CRM_CUSTTRANS_ITG] WITH (NOLOCK)
WHERE (TRANSTYPE = 8 OR TRANSTYPE = 13)
AND SETTLEAMOUNTCUR > 0
AND CUSTFEEINVOICETRANSACTION30005 IS NOT NULL
AND CUSTFEEINVOICETRANSACTION30005 <> ''
AND CUSTFEEINVOICETRANSACTION30005 IN
SELECT F.FeeId
FROM [dbo].[Fees] F WITH (NOLOCK)
WHERE F.FeeStatus = 3 --Unpaid
AND F.Payer IS NOT NULL
Select Data (contained in a stored proc):
SELECT ACCOUNTNUM, CUSTFEEINVOICETRANSACTION30005, AMOUNTCUR, SETTLEAMOUNTCUR
FROM [LMNZLSQL002\AX].[LMNZ_AX_LIVE].[dbo].[CRM_CUSTTRANS_ITG] WITH (NOLOCK)
WHERE (TRANSTYPE = 8 OR TRANSTYPE = 13)
AND SETTLEAMOUNTCUR > 0
AND CUSTFEEINVOICETRANSACTION30005 IS NOT NULL
AND CUSTFEEINVOICETRANSACTION30005 <> ''
AND CUSTFEEINVOICETRANSACTION30005 IN
SELECT F.FeeId
FROM [dbo].[Fees] F WITH (NOLOCK)
WHERE F.FeeStatus = 3 --Unpaid
AND F.Payer IS NOT NULL
ORDER BY ACCOUNTNUM,CUSTFEEINVOICETRANSACTION30005
At one time I suspected that the issue may be related to database locking. So, as you can see, I've added NOLOCK locking hints to rule this out. I'm also
using a Service Behaviour (SqlAdapterInboundTransactionBehaviour) declaring a transaction level of ReadUncommitted. Obviousy I'd like to move away from the
possibility of dirty reads. Also, I've checked the SQL activity monitors when I expect the process to run and can see no locks holding it up. Also, I can
freely execute the stored procedures from SQL Management Studio at these times.
I'm not too experienced at monitoring BizTalk, but I wondered if some kind of throttling was occuring. So I've moved the receive location (and the
orchestration that doesn't always get initiated) to its own host instance and have done some monitoring via the performance counters in perfmon. I haven't
spotted any thottling going on, but maybe I wasn't looking at the correct counters (mainly used the Message Agent items).
Here's a summary of the receive location properties:
Transport: WCF-Custom
Receive Handler: AXPaymentsToFeesEngine (this host instance only hosts this receive location and the orchestration it should be activating).
Receive pipeline: XmlReceive
General tab:
EndpointAddress: mssql://lmnzlsql003/CRM/FeesEngine?InboundId=PaidInAXUnpaidInFeesEngine
Endpoint Identity - all default values
Binding Tab:
Binding Type: sqlBinding
allowIdentityInsert: False
batchSize: 20
chunkSize: 4194304
enableBizTalkCompatibilityMode: True
enablePerformanceCounters: False
encrypt: False
inboundOperationType: TypedPolling
maxConnectionPoolSize: 100
notificationStatement: Not specified
notifyListenersOnStart: True
polledDataAvailableStatement: EXEC [dbo].[bts_PollForAXFeePaymentsNotPresentInFeesEngine_IsDataAvailable]
polledIntervalInSeconds: 3600
pollingStatement: EXEC [dbo].[bts_GetFeesMarkedUnpaidThatHaveBeenPaidInAX]
pollWhileDataFound: False
UseAmbientTransaction: True
useDatabaseNameInXsdNamespace: False
workstationId: Not specified
xmlStoredProcedureRootNodeName: Not specified
xmlStoredProcedureRootNodeNamespace: Not specified
All timeouts: 5 mins.
Behaviour Tab
ServiceBehaviour - sqlAdapterInboundTransactionBehaviour, ReadUncommitted, timeout mins
Other Tab:
Credentials: None
Preserve message order: False
Mesages Tab:
Inbound BizTalk message body: Body
Error handling: All disabled
Thanks in advance,
MarkThanks everyone for your input on this. None of the suggestions actually seemed to solve our specific issue, and we ended up raising a support call with Microsoft. They got us to use some tracing tools that are not publically available and it turns out that
there was a problem with the underlying WCF commnications channel, which was not visible via the usual windows event logs. They suggested a solution that, although very counter-intuitive, seems to have resolved our problem; set the ReceiveTimeout property
of the receive adapter to <!-- /* Font Definitions */ @font-face {font-family:SimSun; panose-1:2 1 6 0 3 1 1 1 1 1; mso-font-alt:宋体; mso-font-charset:134; mso-generic-font-family:auto; mso-font-pitch:variable; mso-font-signature:3 680460288 22 0 262145
0;} @font-face {font-family:"Cambria Math"; panose-1:2 4 5 3 5 4 6 3 2 4; mso-font-alt:"Calisto MT"; mso-font-charset:0; mso-generic-font-family:roman; mso-font-pitch:variable; mso-font-signature:-1610611985 1107304683 0 0 159 0;} @font-face
{font-family:Calibri; panose-1:2 15 5 2 2 2 4 3 2 4; mso-font-alt:"Arial Rounded MT Bold"; mso-font-charset:0; mso-generic-font-family:swiss; mso-font-pitch:variable; mso-font-signature:-1610611985 1073750139 0 0 159 0;} @font-face {font-family:"\@SimSun";
panose-1:2 1 6 0 3 1 1 1 1 1; mso-font-charset:134; mso-generic-font-family:auto; mso-font-pitch:variable; mso-font-signature:3 680460288 22 0 262145 0;} /* Style Definitions */ p.MsoNormal, li.MsoNormal, div.MsoNormal {mso-style-unhide:no; mso-style-qformat:yes;
mso-style-parent:""; margin:0cm; margin-bottom:.0001pt; mso-pagination:widow-orphan; font-size:12.0pt; font-family:"Times New Roman","serif"; mso-fareast-font-family:SimSun; mso-fareast-language:ZH-CN;} .MsoChpDefault {mso-style-type:export-only;
mso-default-props:yes; font-size:10.0pt; mso-ansi-font-size:10.0pt; mso-bidi-font-size:10.0pt;} @page WordSection1 {size:612.0pt 792.0pt; margin:72.0pt 72.0pt 72.0pt 72.0pt; mso-header-margin:36.0pt; mso-footer-margin:36.0pt; mso-paper-source:0;} div.WordSection1
{page:WordSection1;} -->
24.20:31:23.6470000 and restart the service host.
Here's the underlying exception:
<!-- /* Font Definitions */ @font-face {font-family:SimSun; panose-1:2 1 6 0 3 1 1 1 1 1; mso-font-alt:宋体; mso-font-charset:134; mso-generic-font-family:auto; mso-font-pitch:variable; mso-font-signature:3 680460288 22 0 262145 0;} @font-face {font-family:"Cambria
Math"; panose-1:2 4 5 3 5 4 6 3 2 4; mso-font-alt:"Calisto MT"; mso-font-charset:0; mso-generic-font-family:roman; mso-font-pitch:variable; mso-font-signature:-1610611985 1107304683 0 0 159 0;} @font-face {font-family:Calibri; panose-1:2 15
5 2 2 2 4 3 2 4; mso-font-alt:"Arial Rounded MT Bold"; mso-font-charset:0; mso-generic-font-family:swiss; mso-font-pitch:variable; mso-font-signature:-1610611985 1073750139 0 0 159 0;} @font-face {font-family:"\@SimSun"; panose-1:2 1 6
0 3 1 1 1 1 1; mso-font-charset:134; mso-generic-font-family:auto; mso-font-pitch:variable; mso-font-signature:3 680460288 22 0 262145 0;} /* Style Definitions */ p.MsoNormal, li.MsoNormal, div.MsoNormal {mso-style-unhide:no; mso-style-qformat:yes; mso-style-parent:"";
margin:0cm; margin-bottom:.0001pt; mso-pagination:widow-orphan; font-size:12.0pt; font-family:"Times New Roman","serif"; mso-fareast-font-family:SimSun; mso-fareast-language:ZH-CN;} .MsoChpDefault {mso-style-type:export-only; mso-default-props:yes;
font-size:10.0pt; mso-ansi-font-size:10.0pt; mso-bidi-font-size:10.0pt;} @page WordSection1 {size:612.0pt 792.0pt; margin:72.0pt 72.0pt 72.0pt 72.0pt; mso-header-margin:36.0pt; mso-footer-margin:36.0pt; mso-paper-source:0;} div.WordSection1 {page:WordSection1;}
-->
[0]1E2C.21C4::07/07/2010-4:52:25.804 [CSharp]:[Wcf] BtsErrorHandler.HandleError called with Exception: System.ServiceModel.CommunicationObjectAbortedException:
The communication object, System.ServiceModel.Channels.ServiceChannel, cannot be used for communication because it has been Aborted.
at System.ServiceModel.Channels.CommunicationObject.ThrowIfDisposedOrImmutable()
at System.ServiceModel.Channels.CommunicationObject.Open(TimeSpan timeout)
at System.ServiceModel.Channels.CommunicationObject.Open()
at System.ServiceModel.Dispatcher.ChannelHandler.InitializeServiceChannel(ServiceChannel channel)
at System.ServiceModel.Dispatcher.ChannelHandler.GetSessionChannel(Message message, EndpointDispatcher& endpoint, Boolean& addressMatched)
at System.ServiceModel.Dispatcher.ChannelHandler.EnsureChannelAndEndpoint(RequestContext request)
at System.ServiceModel.Dispatcher.ChannelHandler.TryRetrievingInstanceContext(RequestContext request). -
Handling the exception in BizTalk WCF-SQL Receive Adapter
As per Application, BizTalk connecting to SQL Server and executing the SP for polling the data. Occasionally we are getting Timeout SQL exception in event log.
Customer is asking why not BizTalk handling this kind of error messages.
Please let me know how to handle exceptions in WCF Receive location.already i set the properties like Suspend request
message on failur and Include exception details in faults
But the error message is returning in Eventlog and not reaching to biztalk
one of the error message is
Another one is :
DB locks happening in SQL ServerYes definitely, you can "Enable routing for failed messages" and subscribed to the failed message.
Later you can create a send port or orchestration with below filter conditions-
"ErrorReport.ErrorType == Failed Message" .
BizTalk demotes all the properties of this message to avoid unwanted subscription and promotes only below mentioned properties under ErrorReport namespace.
Description
ErrorType
FailureCategory
FailureCode
InboundTransportLocation
MessageType
OutboundTransportLocation
ReceivePortName
RoutingFailureReportID
SendPortName
Check the below articles which provide good sample for the same.
error-message-routing-pattern-demo-in-biztalk
http://mscerts.programming4.us/application_server/biztalk%202009%20%20%20handling%20failed%20messages%20and%20errors.aspx
Using Failed Message Routing
You can also setup Backup transport feature, which will only get activated in case of failure.
You can configure it to send emails as well.
How to Configure Backup Transport Options for a Send Port
Which one to choose between the two-
Using the backup transport for SMTP would allow you to send an email, but that’s normally not a good solution because you’ll just get that message, with no context, and not really know what to do with it. Failed message routing will let you setup filters
based on the failures (types, descriptions, etc) and this way you can organize how you handle failures. If a pipeline validation fails you can send the message to one place to be repaired where as if a transport fails (or something else) it can be handled
in a different way.
https://social.msdn.microsoft.com/Forums/en-US/09256232-d92a-448b-9c8d-db6144afee84/enable-routing-for-failed-messages-versus-backup-transport?forum=biztalkgeneral
Thanks,
Prashant
Please mark this post accordingly if it answers your query or is helpful. -
Problem about Biztalk SAP adapter running on 64-bit host instance.
Hi there
Both 32-bit and 64-bit host instances are running. We use WCF-Custom adapter to communicate with SAP. And for WCF-Custom adapter, we assigned a 64-bit host.
We copied all the library files in rfcsdk32bit to folder Windows\System32, and those in rfcsdk64bit to folder Windows\SysWOW64.
All is going just fine until we can not enable the receive location retrieving data from SAP with WCF-Custom adapter and BindingType sapBinding. Error information as below:
Reason: System.BadImageFormatException: Could not load file or assembly 'Microsoft.Adapters.SAP.SAPGInvoker.dll' or one of its dependencies. is not a valid Win32 application. (Exception from HRESULT: 0x800700C1)
File name: 'Microsoft.Adapters.SAP.SAPGInvoker.dll'
at Microsoft.Adapters.SAP.SAPBinding.CreateBindingElements()
at System.ServiceModel.Channels.Binding.CanBuildChannelListener[TChannel](BindingParameterCollection parameters)
at Microsoft.BizTalk.Adapter.Wcf.Runtime.WcfUtils.IsQueuedReceive(Binding binding)
at Microsoft.BizTalk.Adapter.Wcf.Runtime.BtsServiceHostBase.InitializeRuntime()
at System.ServiceModel.ServiceHostBase.OnOpen(TimeSpan timeout)
at System.ServiceModel.Channels.CommunicationObject.Open(TimeSpan timeout)
at Microsoft.BizTalk.Adapter.Wcf.Runtime.WcfReceiveEndpoint.Enable()
at Microsoft.BizTalk.Adapter.Wcf.Runtime.WcfReceiveEndpoint..ctor(BizTalkEndpointContext endpointContext, IBTTransportProxy transportProxy, ControlledTermination control)
at Microsoft.BizTalk.Adapter.Wcf.Runtime.WcfReceiver`2.AddReceiveEndpoint(String url, IPropertyBag adapterConfig, IPropertyBag bizTalkConfig)
This problem disappears right after we switch the host for WCF-Custom adapter back to a 32-bit host, which is for sure.
Some gudiance instructed: Both 32-bit rfcsdk library files and 64-bit rfcsdk library files need to be copied into both two directories above. But most of the filenames are overlapped obviously. How come they can exists under a same directory?
Or do I just get the wrong 64-bit rfcsdk? Does anyone happen to have by hand? I already serach through SAP download site. My rfcsdk files list is below:
32-bit:
icudt34.dll
icuin34.dll
icuuc34.dll
librfc32u.dll
librfc32u.lib
libsapu16vc80.dll
libsapucum.dll
libsapucum.lib
saprfc32.lib
64-bit:
icudt26l.dll
icuin26.dll
icuuc26.dll
librfc32u.dll
librfc32u.lib
libsapu16vc71.dll
libsapucum.dll
libsapucum.lib
Thanks
Gou JunThe librfc32u.dll seems to be compiled against 4053 version (SP1 ATL security update) of C++ runtime so best to have that installed as well. So I would make sure to have x86 and x64 versions SP1 + MFC + ATL updates.
C++ redistributable 2005 SP1 x86 + x64 + security update(s)
X86 SP1 :
http://www.microsoft.com/download/en/details.aspx?id=5638
X64 ! SP1 :
http://www.microsoft.com/download/en/details.aspx?id=18471
X86 + x64 ATL security updates :
http://www.microsoft.com/download/en/details.aspx?id=14431
X86 + x64 MFC security updates :
http://www.microsoft.com/download/en/details.aspx?id=26347
C++ redistributable 2008 SP1 x86 + x64 + security update(s)
X86 SP1 :
http://www.microsoft.com/download/en/details.aspx?id=55821
X64 SP1 :
http://www.microsoft.com/download/en/details.aspx?id=2092
X86 + x64 ATL security updates :
http://www.microsoft.com/download/en/details.aspx?id=11895
X86 + x64 MFC security updates :
http://www.microsoft.com/download/en/details.aspx?id=26368
librfc32u.dll manifest is this when checking it out in VS:
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
<dependency>
<dependentAssembly>
<assemblyIdentity type="win32" name="Microsoft.VC80.CRT" version="8.0.50727.4053" processorArchitecture="amd64" publicKeyToken="1fc8b3b9a1e18e3b"></assemblyIdentity>
</dependentAssembly>
</dependency>
</assembly> -
BizTalk WCF-WebHttp Custom Headers per message
Hi,
I have a requirement to connect to a service using the WCF-WebHTTP adapter that requires add custom http Header "X-Auth: <Value varies for messageType>" per message.
So am using dynamic Request-Response port to set HTTPHeaders dynamically per message. I am using following code to assign HttpHeaders in Message Assignment Shape.
Msg_CogSrvReq(WCF.HttpHeaders)="X-Auth: "+<value that extracted from a another service>;
However while testing these, am getting an error "X-Auth header not found in request" from the service.
Why this HttpHeader not passing to the service while requesting? Is am missing anything?
Thanks,
Praveen
PraveenHi Praveen,
I have seen this issue where when you try to set the HTTPHeader properties, the WCF-WebHTTP adapter
ignores it and the outgoing message always goes without the custom HTTPHeader that’s been set in Orchestration.
We had a similar situation like yours where I had to set a GUID as one of the properties in the HTTPHeader and needed to use WCF-WebHTTP
adapter. Also if you use a static adapter and configure the properties, different GUIDs would not get generated per message instance, this is due to the way adapter initialize the message instances. So the only solution is to have dynamic GUID per message
instance is using the dynamic port as you do.
And for setting the dynamic HTTPHeader properties with WCF-WebHTTP adapter,
I used a custom pipeline component with a code as below. Though you have the dynamic send port, your dynamic port need to have pipeline configured, in this case you can use a custom pipeline with a component in it will following code:
public Microsoft.BizTalk.Message.Interop.IBaseMessage Execute(IPipelineContext pContext, Microsoft.BizTalk.Message.Interop.IBaseMessage pInMsg)
pInMsg.Context.Write("HttpHeaders", "http://schemas.microsoft.com/BizTalk/2006/01/Adapters/WCF-properties", "X-Auth: "+<value that extracted from a another service>);
return pInMsg;
Check the following article in this context:
http://www.codit.eu/blog/2013/04/30/using-httpheaders-with-wcf-webhttp-adapter-on-biztalk-2013/
If this answers your question please mark it accordingly. If this post is helpful, please vote as helpful by clicking the upward arrow mark next to my reply.
Maybe you are looking for
-
Search in library not working for some libraries (and for others it does work)
Dear SharePoint/Search adepts As you all know, in SharePoint 2013 you have the possibility to search from a library. Today I encountered some strange behavior- We've deployed a SharePoint 2013 environment, 4 SharePoint servers (2wfe +2app), and an ad
-
Hi, I have defined a search string for EBS with Target field BDC 1) "Blank - BDC Name 1 - BSEG-ZUONR" and 2) "Map - BDC Value 1 - ". The mapping is working perfectly. The posting rule entry is 40 Bank a/c 50 Bank clg a/c. The ZUONR field on the debit
-
Attempting to create a GREP Style
I'm trying to make a GREP style for one of my paragraph styles, that will take the text from the beginning of a line until a colon and set a character style to it to bold that part. Example: Step 1: Take bread Step 2: Take peanut butter Step 3: Sprea
-
OAM support for directory mapping
Is there a way OAM can be set up to point to one directory for a user store and point to another directory for the authorization data ( directory mapping ) ? Thanks
-
Software update does not function
When I click software update I get a preferences error which states could not load software update. Any idea what the problem is. I have already run disk utility and there are no problems detected.