我是.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身份验证。
答案 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);