2009-03-23 8 views
0

私は.NETとC#を初めて使用しています。私はWebサービスを作成し、Webページから見ることができます。 Windowsアプリケーションから呼び出そうとすると、例外401が発生します。コードは正常にコンパイルされますが、実行中は例外がスローされます。これはWindows Appのコードです。 :WindowsアプリケーションからWebサービスを呼び出す

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:私はWebサービスをホストするWebサイトでWindows認証を使用しています。

答えて

1

私は、UseDefaultCredentialsの効果を生成するプロキシにプロパティがあると信じて、それをtrueに設定してみてください。

datasvc.UseDefaultCredentials = true; 

これはしばらくして、サービスによって強制的にWindowsの資格情報が渡されると思いますが、私はあなたのサービス1オブジェクトを入力するかわからない

+0

を使用。私が持っている問題は、フォームがデータなしで開くということだけです。私はこの例をVS 2005を使用しているDatagridで使用しましたが、VS 2008でDataGridViewを使用しています。 –

+0

DataGridViewを展開してAuthors列を選択する2行のコメントを付ける必要がありました。 : //dataGridView1.Expand(-1); //dataGridView1.NavigateTo(0、 "Authors"); これらの行のコメントを外すと、コンパイラエラーが発生します(展開のように見えますが、NavigateToメソッドはDataGridViewコンポーネントの一部ではありません)。 –

+0

私はあなたのために解決策が働いてうれしいです。もう一つの問題は、datagridviewが古いDataGridと同じではないためです。完全な列を選択するには、グリッドのSelectionModeプロパティをColumnHeaderSelectに変更する必要がありますが、このモードでは自動生成された列は使用できません。 –

1

ので、私はあなたがそれに関連付けられているものプロパティやメソッド言うことはできませんが継承しますが、私が知っている時はいつでもあなたは

HttpWebRequest req = (HttpWebRequest)WebRequest.Create(URL); 
を使ってあなたにWebサービスを呼び出すことができます

そして、どちらかこれはOK働い

req.UseDefaultCredentials = true; 

または

req.Credentials = new NetworkCredential(userName, password); 
関連する問題