C# 如何以安全的方式将XML从我的C应用程序发布到Web服务

C# 如何以安全的方式将XML从我的C应用程序发布到Web服务,c#,xml,web-services,asmx,C#,Xml,Web Services,Asmx,我得到了一个将xml发布到Web服务的代码。给你 web服务设计代码 从控制台APSC调用web服务 以上代码是否正常工作 为什么人们说不要在生产中使用上述代码……会出现什么样的安全问题 指导我如何在不创建代理的情况下以安全的方式将xml发布到web服务?谢谢使用Add Service Reference创建代理有什么问题吗?我建议使用实际名称空间而不是。在其他方面,似乎还可以。唯一需要考虑的是使用https而不是http。但这主要取决于您发送的数据以及它是否是公共互联网服务。您也可以使用Upl

我得到了一个将xml发布到Web服务的代码。给你

web服务设计代码

从控制台APSC调用web服务

以上代码是否正常工作

为什么人们说不要在生产中使用上述代码……会出现什么样的安全问题


指导我如何在不创建代理的情况下以安全的方式将xml发布到web服务?谢谢

使用Add Service Reference创建代理有什么问题吗?我建议使用实际名称空间而不是。在其他方面,似乎还可以。唯一需要考虑的是使用https而不是http。但这主要取决于您发送的数据以及它是否是公共互联网服务。您也可以使用UploadData method.net 4.0及更高版本的异步实现,但这取决于。另外,通常您应该提供身份验证。ASMX是一种遗留技术,不应用于新的开发。WCF或ASP.NET Web API应用于Web服务客户端和服务器的所有新开发。一个提示:微软已经在MSDN上退出了。
public class Foo
{
    public int Id { get; set; }
    public string Name { get; set; }
}

[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
public class Service1 : System.Web.Services.WebService
{
    [WebMethod]
    public string HelloWorld(Foo foo)
    {
        return "Hello World";
    }
}
class Program
{
    static void Main(string[] args)
    {
        using (WebClient client = new WebClient())
        {
            client.Headers.Add("SOAPAction", "\"http://tempuri.org/HelloWorld\"");
            client.Headers.Add("Content-Type", "text/xml; charset=utf-8");
            var payload = @"<?xml version=""1.0"" encoding=""utf-8""?><soap:Envelope xmlns:soap=""http://schemas.xmlsoap.org/soap/envelope/"" xmlns:xsi=""http://www.w3.org/2001/XMLSchema-instance"" xmlns:xsd=""http://www.w3.org/2001/XMLSchema""><soap:Body><HelloWorld xmlns=""http://tempuri.org/""><foo><Id>1</Id><Name>Bar</Name></foo></HelloWorld></soap:Body></soap:Envelope>";
            var data = Encoding.UTF8.GetBytes(payload);
            var result = client.UploadData("http://localhost:1475/Service1.asmx", data);
            Console.WriteLine(Encoding.Default.GetString(result));
        }
    }
}