2013-01-17 45 views
5

我有一個來自我們客戶公司的.WSDL文件,我需要使用它來調用Web服務。他們的系統是SAP(SAP PI)。我的應用程序是在VS 2008中開發的C#.NET 3.5客戶端。我使用他們提供的.WSDL文件在Visual Studio中添加了Service Reference。這爲我創建了一個引用類來調用他們的服務,併爲我設置了app.config文件中的幾個綁定。從Web服務遇到未經授權的身份驗證方案

我沒有更改app.config文件中的任何內容,但確實創建了調用其Web服務的代碼。但是,當我打電話給他們的web服務時,我收到以下異常:

HTTP請求未經客戶端身份驗證方案「匿名」的授權。從服務器收到的身份驗證標頭爲'Basic realm =「SAP NetWeaver Application Server ...」'。

(我稍微修改了「基本境界」一節中使用,從而給不給它。字符串)

難道在app.config沒有得到從WSDL正確建?我是否應該修改app.config文件?

事情我已經嘗試:

  • 在app.config中改變authenticationScheme從匿名到基本
    (以及其他所有身份驗證類型)中的app.config
  • 改變境界字符串匹配在異常消息境界
  • 設置的用戶名/密碼在ClientCredentials.Username對象字段在我的代碼

任何指針或幫助將不勝感激。

編輯:經過一些調查,我發現,Visual Studio中有關於擴展元素政策和策略斷言幾個警告:

  • 自定義工具警告:從命名空間中的可選WSDL擴展元素「政策」 「 http://schemas.xmlsoap.org/ws/2004/09/policy'不是 處理。
  • 自定義工具警告:以下策略斷言未導入:
    XPath:// wsdl:definitions [@ targetNamespace ='urn:sap-com:document:sap:rfc:functions']/wsdl:binding [名稱= Binding_FieldValidation'] 斷言:...

我不是能夠找到,如果這是與認證方案相關或不以我目前的問題。它似乎是相關的,但我還沒有找到任何解決方案來解決這些政策警告。看來WCF不能很好地處理wsdl中的語句。

回答

0

大多數SAP服務不支持匿名。 因此,通過某種形式的認證數據。 用戶和口令/ X.509票務...

如果你與呼叫發送身份驗證數據的嘗試這個

問SAP傢伙 重新生成WSDL沒有SAP斷言,沒有政策,SOAP 1.1。 您也可以嘗試手動編輯WSDL以刪除額外的guff ...

0

作爲一個起點,我會驗證您可以使用提供的用戶名和密碼成功調用服務。使用類似SoapUI的東西來測試一切正常 - 只需創建一個新項目,導入SAP PI提供的WSDL,設置用戶名和密碼並執行調用。您可能會得到某種形式的空載有效的異常,但至少會驗證用戶名和密碼是否正確。

一旦您驗證了它的正常工作,請檢查您的應用程序是否正確調用了服務,並且是否正在發送http基本身份驗證標頭。您可以使用網絡監控工具並檢查http請求是否正確生成來確認。像netcat for Windows可以做到這一點 - 只需讓它監聽本地計算機上的端口,然後指定localhost和端口作爲您的SOAP端點。

一旦您驗證這兩項都是正確的,您的電話應該會成功。

0

必須使用憑據丟失基本身份驗證標頭或錯誤 。

如果服務通過它的SOAP適配器發佈,SAP PI將始終默認爲基本認證。我會調查WCF是否確實發送了該頭文件(例如,將您的客戶端端點指向TCP網關,並讓TCP網關指向WSDL中的SAP PI端點)。

關於警告:AFAIK由SAP PI生成的WSDL將始終包含這些策略標記,您不能真正省略它。你可以做的只是把它們扔掉,因爲它們沒有真正驗證

相關問題