2011-01-28 133 views
1

我試圖從C++應用程序訪問.net webservice(內置vs 2008)。我使用IXMLHttpRequest訪問service.Following是代碼爲:使用WSE時無法從C++客戶端訪問Web服務

MSXML::IXMLHttpRequestPtr httpReq(_uuidof(MyXMLHTTPRequest)); 
_bstr_t HTTPMethod ; 
_variant_t noAsync = _variant_t((bool)false); 

HTTPMethod = _bstr_t("POST");  
httpReq->open(HTTPMethod ,"webservice address",noAsync); 
httpReq->setRequestHeader("Content-Type", "application/soap+xml"); 

CString szRequest; 
szRequest = "SOAP string"; 

VARIANT vRequest; 
vRequest.vt = VT_BSTR; 
vRequest.bstrVal = szRequest.AllocSysString(); 

httpReq->send(vRequest); 
BSTR strText; 

_bstr_t bsResponse = httpReq->responseText; 

但我得到一個SOAP異常,當我在web.config文件中添加以下行。爲什麼會發生這種情況,解決方案是什麼?我如何訪問使用WSE的服務?

<webServices> 
    <soapExtensionTypes> 
    <add type="Microsoft.Web.Services2.WebServicesExtension, Microsoft.Web.Services2, Version=2.0.0.0, Culture=neutral, PublicKeyToken=xxxxxxxx"/> 
    </soapExtensionTypes> 
</webServices> 

我得到以下異常:

<soap:Fault> 
<faultcode>soap:Server</faultcode><faultstring>System.Web.Services.Protocols.SoapHeaderException: Server unavailable, please try later ---&gt; System.Threading.ThreadAbortException: Thread was being aborted. 
    at System.Threading.Thread.AbortInternal() 
at System.Threading.Thread.Abort(Object stateInfo) 
at System.Web.HttpResponse.End() 
at Microsoft.Web.Services2.WebServicesExtension.BeforeDeserializeServer(SoapServerMessage message) 
--- End of inner exception stack trace ---</faultstring><faultactor>http: //localhost:2211/WebSite/WebServices/JobLogService.asmx</faultactor></soap:Fault> 

回答

0

SoapHeaderException:服務器不可用,請稍後再試

是不是這個問題?也許問題在於,當你調整web.config時,Web服務不會啓動。

+0

我知道。我在問爲什麼會發生這種情況?解決辦法是什麼? – sid 2011-01-28 13:19:55