2014-12-19 51 views
1

我正在使用http服務Web服務,它是基於soap的服務,作爲響應,它給出http代碼爲500的錯誤 。任何想法爲什麼如此?如何在C#中使用soap web服務,響應爲ERROR 500

soap body is as 

queryNameAvailability請求

<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:uri="uri:v2.external.query.name.availability.asic.gov.au" xmlns:oas="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" xmlns:uri1="uri:business.document.header.types.asic.gov.au" xmlns:uri2="uri:fss.types.asic.gov.au" xmlns:uri3="uri:types.asic.gov.au" xmlns:uri4="uri:nni.types.asic.gov.au"> 
    <soap:Header/> 
    <soap:Body> 
     <uri:request> 
     <uri1:businessDocumentHeader> 
      <uri1:messageType>queryNameAvailability</uri1:messageType> 
      <uri1:messageReferenceNumber>cnr 1</uri1:messageReferenceNumber> 
      <uri1:messageVersion>2</uri1:messageVersion> 
      <uri1:senderId>234</uri1:senderId> 
      <uri1:senderType>REGA</uri1:senderType> 
     </uri1:businessDocumentHeader> 
     <uri:businessDocumentBody> 
      <uri4:proposedName>CNR</uri4:proposedName> 
      <uri4:companyNameAvailabilityCheck>true</uri4:companyNameAvailabilityCheck> 
     </uri:businessDocumentBody> 
     </uri:request> 
    </soap:Body> 
</soap:Envelope> 

queryNameAvailability CNR 1 3e9527dc-71fa-4103-bbb3-eb8d4221573a ASIC GOVT ASIC 商業名稱 2014-12-19T09:08:03 ASIC 真正 可用 CNR是可用的。

C#代碼是

String user = "username"; 
string pwd = "password";  
NetworkCredential creds = new NetworkCredential(user, pwd); 
StreamReader reader = new StreamReader((Server.MapPath("").ToString() + "\\XMLFile1.xml").ToString().Replace("Home\\","")); 
string soap = reader.ReadToEnd(); 
byte[] bytess = System.Text.Encoding.ASCII.GetBytes(soap); 
HttpWebRequest request = (HttpWebRequest)WebRequest.Create("https://www.gateway.uat.asic.gov.au/gateway/ExternalQueryNameAvailabilityPortV2?WSDL"); 
request.Credentials = creds; 
request.Method = "POST"; 
request.ContentType = "text/xml; charset=utf-8"; 
request.ContentLength = bytess.Length; 
Stream oss = request.GetRequestStream(); 
oss.Write(bytess, 0, bytess.Length); 
WebResponse response = request.GetResponse(); 

上響應代碼爲500

任何想法是錯誤的原因服務器錯誤創立?

+0

的[自維基:]細節(HTTP:// EN。 wikipedia.org/wiki/List_of_HTTP_status_codes#5xx_Server_Error)HTTP ERROR 500:'「遇到意外情況並且沒有更具體的消息適用時發出的一般性錯誤消息。」' – musefan 2014-12-19 10:11:43

回答

1

雖然呼叫服務,該網址不得包含「WSDL?」末,因爲它是隻檢查服務

0

大部分您的輸入是打破Web服務並拋出異常。正如前一天所建議的那樣,只有使用鏈接來使用WSDL瀏覽器獲取WSDL才能顯示您正在調用一個Post方法,它實際上甚至沒有一個Input,它在Web服務中拋出一個異常,因此Http 500在客戶端

+1

抱歉發佈半描述,只是添加了上面的代碼,請檢查它 – Geeti 2014-12-19 10:14:51

+1

客戶端代碼不會幫助,問題是在服務器上,附加調試r並在Web服務中斷,如果你有代碼或者重新驗證你的輸入,像索引超出範圍,參數異常,空引用將導致Http 500 – 2014-12-19 10:17:11

+0

我把你的WSDL併發布在http:///wsdlbrowser.com/,它提取了您正在調用的方法externalQueryNameAvailability,但現在這是一個Post請求,它有一些不正確的輸入,因此是一個異常。驗證Web服務 – 2014-12-19 10:33:57