I have a ASP.NET (C#) web page which utilizes a VB class library. The VB library performs a SOAP POST to a remote web service and returns a message. However the VB library keeps running into a "No connection could be made because the target machine actively refused it xxx.xxx.xxx.xxx"
However, I've also created a C# test client which consumes the same VB class library and can perform the post just fine!
So what is going on here?
Default.aspx:
protected void Page_Load(object sender, EventArgs e)
{
String soapString = ........
MyVBMiddleTierObject.PostMgr pMgr = new MyVBMiddleTierObject.PostMgr();
Response.Write(pMgr.DoPOST(soapString));
}
VB Middle Tier:
Public Function DoPOST(ByVal soapMsg As String) As String
Dim encode As UTF8Encoding = New UTF8Encoding()
Dim buff() As Byte = encode.GetBytes(soapMsg)
Dim client As HttpWebRequest = CType(WebRequest.Create(ConfigurationManager.AppSettings("SoapService")), HttpWebRequest)
client.Headers.Add("SOAPAction", "")
client.ContentType = "text/xml;charset=utf-8"
client.Accept = "text/xml"
client.Method = "POST"
client.ContentLength = buff.Length
client.Timeout = 5000
Dim s As Stream = client.GetRequestStream()
s.Write(buff, 0, buff.Length)
s.Close()
Dim response As WebResponse = client.GetResponse()
s = response.GetResponseStream()
Dim sr As StreamReader = New StreamReader(s)
sPostResult = sr.ReadToEnd()
response.Close()
DoPOST = sPostResult
End Function
C# Test client:
class Program
{
static void Main(string[] args)
{
String soapString = ........
MyVBMiddleTierObject.PostMgr pMgr = new MyVBMiddleTierObject.PostMgr();
String s = pMgr.DoPOST(soapString);
Console.WriteLine(s);
}
}
So why is my C# Test Client working just fine, but my web page not?
Update
Soap Message:
<soapenv:Envelope xmlns:java="java:com.xyz.service"
xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:vcs="http://schemas.xyz.com/vcs">
<soapenv:Header>
<wsse:Security soapenv:mustUnderstand="1"
xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd">
<wsse:UsernameToken wsu:Id="UsernameToken-5775010" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility- 1.0.xsd">
<wsse:Username>JoeShmoe</wsse:Username>
<wsse:Password Type="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordText">123456789</wsse:Password>
</wsse:UsernameToken>
</wsse:Security>
</soapenv:Header>
<soapenv:Body>
<vcs:theirService>
<vcs:theirMethod>
<java:Frequency>M</java:Frequency>
</vcs:theirMethod>
</vcs:theirService>
</soapenv:Body>
</soapenv:Envelope>
Again, the exact same soap string is being posted (by my test client, and by my web page) but only my test client can connect...
Update to include web.config
<configuration>
<appSettings>
<add key="SoapService" value="https://www.wxy.com/theirService"/>
</appSettings>
<connectionStrings/>
<system.web>
<compilation debug="true" strict="false" explicit="true"/>
<authentication mode="Windows"/>
</system.web>
</configuration>
It's pretty basic...