2

とにかく、サービス参照を追加したり、プロキシをまったく使用したりせずに、WCF サービスを呼び出すことができますか。

4

3 に答える 3

0

そう聞かれたら、Dynamic Proxy Generationに興味があるかもしれません。

この記事を ご覧 ください. いくつかの点について議論する必要があるかもしれませんが、アイデアはここにあります。

この質問も役立つかもしれません。

于 2011-07-07T06:01:41.543 に答える
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;
}
于 2011-07-07T10:22:56.120 に答える
0

簡単な答え:いいえ

WCF は、クライアントと呼び出されるサービスの間にプロキシを配置するという非常に基本的な原則に基づいています。これを「回避」することはできません。

[サービス参照の追加] を使用してプロキシを作成するか、コードで作成するかを選択できますが、プロキシが必要です。それを回避する方法はありません。

于 2011-07-07T05:51:42.840 に答える