C#应用程序通过https连接SAP PI

我正在开发一个控制台.NET客户端应用程序,通过https通道连接到我们的合作伙伴的远程服务器SAP PI。 不幸的是,我们遇到了很多问题,我不知道还有什么可做的。 我会尽力解释,如果有人能帮助我,我会非常感激!

使用SAP PI的远程服务器具有虚构的URL:

https://dev.servereai30.server.com/XISOAPAdapter/MessageServlet?channel=B2B_MYENTERPRISE:PROJECT:SOAP_SND_MYENTERPRISE_Sellout

当我访问URL时,提供由我们的合作伙伴提供的用户和密码,服务器似乎正确响应:

urlok

我已经收到来自我的合作伙伴的wsdl,并且我已经开始开发一个C#应用程序来连接到Web服务。 加载wsdl作为服务引用后,这是由Visual Studio创建的app.config。

    <?xml version="1.0"?>
<configuration>
    <configSections>
        <sectionGroup name="applicationSettings" type="System.Configuration.ApplicationSettingsGroup, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
            <section name="CockpitQCWSExtractor.Properties.Settings" type="System.Configuration.ClientSettingsSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false"/>
        </sectionGroup>
    </configSections>
    <startup><supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/></startup>
    <system.serviceModel>
        <bindings>
            <basicHttpBinding>
                <binding name="Sellout_OBBinding">
                    <security mode="Transport">
                        <transport clientCredentialType="Basic"  />
                        <message clientCredentialType="UserName" algorithmSuite="Default" />
                    </security>
                </binding>
                <binding name="Sellout_OBBinding1" />
            </basicHttpBinding>
        </bindings>
        <client>
            <endpoint address="https://dev.servereai30.server.com/XISOAPAdapter/MessageServlet?channel=B2B_MYENTERPRISE:PROJECT:SOAP_SND_MYENTERPRISE_Sellout"
                binding="basicHttpBinding" bindingConfiguration="Sellout_OBBinding"
                contract="SellOutWSDL.Sellout_OB" name="Sellout_OBPort" />
        </client>
    </system.serviceModel>
</configuration>

这是一个示例应用程序代码:

var wsRefa = new Sellout_OBClient();
wsRefa.ClientCredentials.UserName.UserName = "<user>";
wsRefa.ClientCredentials.UserName.Password = "<password>";
wsRefa.Sellout_OB();

该应用程序中断了消息:无法为权限为'dev.servereai30.server.com'的SSL / TLS建立安全通道。 我认为问题在于服务器证书未被客户端机器接受,但我修改了证书通道,一切都很正常。

堆栈跟踪:

Server stack trace: 
   at System.ServiceModel.Channels.HttpChannelUtilities.ProcessGetResponseWebException(WebException webException, HttpWebRequest request, HttpAbortReason abortReason)
   at System.ServiceModel.Channels.HttpChannelFactory`1.HttpRequestChannel.HttpChannelRequest.WaitForReply(TimeSpan timeout)
   at System.ServiceModel.Channels.RequestChannel.Request(Message message, TimeSpan timeout)
   at System.ServiceModel.Dispatcher.RequestChannelBinder.Send(Message message, TimeSpan timeout)
   at System.ServiceModel.Channels.ServiceChannel.Call(String action, Boolean oneway, ProxyOperationRuntime operation, Object[] ins, Object[] outs, TimeSpan timeout)
   at System.ServiceModel.Channels.ServiceChannel.Call(String action, Boolean oneway, ProxyOperationRuntime operation, Object[] ins, Object[] outs)
   at System.ServiceModel.Channels.ServiceChannelProxy.InvokeService(IMethodCallMessage methodCall, ProxyOperationRuntime operation)
   at System.ServiceModel.Channels.ServiceChannelProxy.Invoke(IMessage message)

Exception rethrown at [0]: 
   at System.Runtime.Remoting.Proxies.RealProxy.HandleReturnMessage(IMessage reqMsg, IMessage retMsg)
   at System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke(MessageData& msgData, Int32 type)
   at CockpitQCWSExtractor.SellOutWSDL.Sellout_OB.Sellout_OB(Sellout_OB1 request)
   at CockpitQCWSExtractor.SellOutWSDL.Sellout_OBClient.CockpitQCWSExtractor.SellOutWSDL.Sellout_OB.Sellout_OB(Sellout_OB1 request) in D:Userscurrent.usercockpit_enterprisecockpit_indcockpit_ind_ws_qc_extractorcockpit_ind_ws_qc_extractorService ReferencesSellOutWSDLReference.cs:line 327
   at CockpitQCWSExtractor.SellOutWSDL.Sellout_OBClient.Sellout_OB(SellOutSellOutSpecification[] SellOut) in D:Userscurrent.usercockpit_enterprisecockpit_indcockpit_ind_ws_qc_extractorcockpit_ind_ws_qc_extractorService ReferencesSellOutWSDLReference.cs:line 333
   at CockpitQCWSExtractor.Program.Run(Object state) in D:Userscurrent.usercockpit_enterprisecockpit_indcockpit_ind_ws_qc_extractorcockpit_ind_ws_qc_extractorProgram.cs:line 61
   at CockpitQCWSExtractor.Infrastructure.ProgramStartHelper.MainStart(String[] args, TimerCallback runCallback) in D:Userscurrent.usercockpit_enterprisecockpit_indcockpit_ind_ws_qc_extractorcockpit_ind_ws_qc_extractorInfrastructureProgramStartHelper.cs:line 32
   at CockpitQCWSExtractor.Program.Main(String[] args) in D:Userscurrent.usercockpit_enterprisecockpit_indcockpit_ind_ws_qc_extractorcockpit_ind_ws_qc_extractorProgram.cs:line 40
   at System.AppDomain._nExecuteAssembly(RuntimeAssembly assembly, String[] args)
   at System.AppDomain.ExecuteAssembly(String assemblyFile, Evidence assemblySecurity, String[] args)
   at Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly()
   at System.Threading.ThreadHelper.ThreadStart_Context(Object state)
   at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
   at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
   at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
   at System.Threading.ThreadHelper.ThreadStart()

有人有一个想法如何解决这个问题?

链接地址: http://www.djcxy.com/p/17183.html

上一篇: C# Application connecting SAP PI over https

下一篇: SAP authentication with WCF Adapter Service project