无论如何,我可以在不添加服务引用甚至根本没有代理的情况下调用WCF服务。
答案 0 :(得分:0)
简要回答:否
WCF基于在客户端和被调用服务之间建立代理的基本原则。你不能“绕过”这个。
您可以选择使用“添加服务引用”创建代理,也可以在代码中创建代理 - 但是您需要代理 - 无法解决此问题。
答案 1 :(得分:0)
答案 2 :(得分:0)
您可以使用HttpWebRequest调用服务。示例如下: -
private static XDocument CallSoapServiceInternal(string uri, string soapAction, string contentType, XDocument reqXml)
{
var req = (HttpWebRequest)WebRequest.Create(uri);
req.ContentType = contentType;
req.Method = "POST";
req.Headers.Add("SOAPAction", soapAction);
req.Credentials = CredentialCache.DefaultCredentials;
req.Timeout = 20000;
//req.Timeout = System.Threading.Timeout.Infinite;
using (var reqStream = req.GetRequestStream())
{
reqXml.Save(reqStream);
}
string respStr;
try
{
using (var resp = (HttpWebResponse)req.GetResponse())
{
using (var rdr = new StreamReader(resp.GetResponseStream()))
{
respStr = rdr.ReadToEnd();
}
}
}
catch (Exception ex)
{
throw new Exception("Error getting service response.", ex);
}
Console.WriteLine(respStr);
Assert.IsTrue(respStr.Length > 0, "Nothing returned");
var respXml = XDocument.Parse(respStr);
return respXml;
}