2

実際に、Windows アプリケーションから共有ポイント リストにアイテムを追加しようとしています。Web 参照を追加し、Lists.asmx にリストされているすべての製品を取得できるようにすると、すべてうまくいきます。プログラムを実行して listServiceObj.GetListAndview("Customers",""); を呼び出そうとすると、「The request failed with HTTP status 401: Unauthorized」というエラーが表示されます。この時点で、サービス参照の資格情報と URL は次のとおりであることに注意してください。

        SpListService.Lists spListService = new SpListService.Lists();
        spListService.Credentials = System.Net.CredentialCache.DefaultCredentials;

        spListService.Url = "http://localhost/_vti_bin/Lists.asmx";


        XmlNode customerListView = spListService.GetListAndView("Customers", "");

次に、上記のコードを ; に変更しました。

        SpListService.Lists spListService = new SpListService.Lists();
        spListService.Credentials = System.Net.CredentialCache.DefaultCredentials;

        spListService.Url = "http://<PC-Name>/sites/Home/_vti_bin/Lists.asmx";


        XmlNode customerListView = spListService.GetListAndView("Customers", "");

次に、次のエラーを受け取りました。

「タイプ 'Microsoft.SharePoint.SoapServer.SoapServerException' の例外がスローされました。」

ログインユーザーをフルコントロールのグループにしました。また、管理者グループのメンバー..しかし同じ結果....また、「http://localhost/」または「http:///」にアクセスしようとすると、SP2010のアクセス拒否ページが表示されることに注意してください.. .. 代わりに、"http:///sites/Home/SitePages/Home.aspx" と記述してチーム サイト コレクションを開く必要があります

私は本当にこれに固執しました....私のこの問題の解決策があれば本当にうれしいです....事前に感謝します MJay

4

1 に答える 1

0

初めて SharePoint リスト Web サービス クライアントを実装したときも、同様の問題がありました。その理由は、自動生成されたクライアント クラスが、実際にはデフォルトで Mozilla Web ブラウザとして自己紹介したためです。SharePoint サーバーはブラウザーの基本認証を許可しなかったため、クライアントは実際にはファイアウォールのログイン ページにリダイレクトされました。

Lists クラスから別のクラスを継承し、次のことを行うことをお勧めします。

  1. コンストラクターで別のユーザー エージェント値を設定します。
  2. 「事前認証」プロパティーを true に設定します。これにより、クライアントは、要求された後だけでなく、最初の要求で資格情報を送信する必要があります。
  3. 必要に応じて、資格情報を明示的に指定してみてください。

以下の例を参照してください。

public class CustomizedLists : Lists
{
    public CustomizedLists() : base()
    {
        this.UserAgent = "Some SharePoint client";

        this.PreAuthenticate = true;

        System.Net.ICredentials creds = new System.Net.NetworkCredential("user", "pwd");
        this.Credentials = creds.GetCredential(uri, "Basic");
    }
}
于 2012-12-12T12:38:57.150 に答える