从Windows应用程序调用Web服务

时间:2009-03-23 20:32:01

标签: winforms web-services

我是.NET和C#的新手。我创建了一个Web服务,我可以从一个Web页面查看它。当我尝试从Windows应用程序调用它时,我得到了异常401:未经授权。代码编译好,但在运行时抛出异常。这是Windows应用程序的代码。 :

namespace BookStore
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            // Create a new instance of a service
            localhost.Service1 datasvc = new localhost.Service1();

            // Create instance of dataset, using WebService method GetTitleAuthors.
            DataSet myData = datasvc.GetTitleAuthors();

            // Set DataGrid's datasource to the myData DataSet.
            dataGridView1.DataSource = myData;

            //Expand all rows.            
            //dataGridView1.Expand(-1);

            //Expand DataTable
            //dataGridView1.NavigateTo(0, "Authors"); 
        }
    }
}

PS:我在托管网络服务的网站上使用Windows身份验证。

2 个答案:

答案 0 :(得分:1)

我相信生成的代理上有一个属性,UseDefaultCredentials尝试将其设置为true。

datasvc.UseDefaultCredentials = true;

虽然已经有一段时间了,但我认为这会迫使服务通过Windows凭证。

答案 1 :(得分:1)

我不知道你的Service1对象继承了什么类型,所以我不能说你有什么属性或方法,但每当我知道你可以使用

打电话给你的web服务
HttpWebRequest req = (HttpWebRequest)WebRequest.Create(URL);

然后使用

req.UseDefaultCredentials = true;

req.Credentials = new NetworkCredential(userName, password);