當我的SOAP請求發送到我的Web服務時,我得到了這個異常「遠程服務器返回錯誤:(500)內部服務器錯誤。」。 WebService有2個參數(int a,int b)。如果我刪除這兩個參數,那麼我不會得到任何異常。發送SOAP請求到WebService錯誤500
這是我第一次使用SOAP + WS。我做錯了什麼? 感謝您抽出時間。
編輯: 我的大學剛剛在我的代碼中發現錯誤。我正在發送無效標題。
這裏是缺少的頭部分:
request.Headers.Add("SOAPAction", "http://tempuri.org/Add");
另外,我使用的URL是不正確的。 錯誤:
http://localhost:62830/Service1.asmx/Add
正確:
http://localhost:62830/Service1.asmx
這裏是我的代碼 客戶認爲發送SOAP到WebService的
private void button2_Click(object sender, EventArgs e)
{
var url = UrlTextBox.Text;
var xml_file_path = FileTextBox.Text;
XmlDocument xml_doc = new XmlDocument();
xml_doc.Load(xml_file_path);
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
request.Method = "POST";
request.ContentType = "text/xml";
request.Accept = "text/xml";
request.Timeout = 30 * 1000;
Stream request_stream = request.GetRequestStream();
xml_doc.Save(request_stream);
request_stream.Close();
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
Stream r_stream = response.GetResponseStream();
StreamReader response_stream = new StreamReader(r_stream, System.Text.Encoding.Default);
string sOutput = response_stream.ReadToEnd();
ResultTextBox.Text = sOutput;
}
這裏的XML文件
<?xml version="1.0" encoding="utf-8"?>
<soap12:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap12="http://www.w3.org/2003/05/soap-envelope">
<soap12:Body>
<add xmlns="http://tempuri.org/" >
<a>5</a>
<b>10</b>
</add>
</soap12:Body>
</soap12:Envelope>
這裏的WebService中的代碼
[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
[System.ComponentModel.ToolboxItem(false)]
public class Service1 : System.Web.Services.WebService
{
[WebMethod]
public int Add(int a, int b)
{
return a + b;
}
}
也許讀他們作爲字符串,然後轉換成int可能有助於 – 2012-04-20 05:09:00
我的計劃後是項目的複雜集合發送到Web服務。將它們作爲字符串讀取會很有用,可以將它們轉換爲複雜的類。 – Jack 2012-04-20 05:37:23