カスタム Web サービスを WSS 3 にデプロイしています。これには 2 つの Web メソッドがあります。
最初のものは、SharePoint オブジェクトを呼び出すことなく、読み込まれたアセンブリのバージョンを返します。2 つ目は、次のようなライブラリに関する基本的な情報を返します。
var spLibrary = [find library logic];
return spLibrary.Name+"@"+spLibrary.Url;
クライアントアプリには、次のようなものがあります。
var service = new WebService1();
service.Url = [url];
service.Credentials = System.Net.CredentialCache.DefaultCredentials;
service.Method1();
service.Method2();
SharePoint が展開されているマシンでクライアント アプリを実行すると、すべてが正常に機能します。
クライアント アプリがリモート コンピューターで (ただし同じユーザーの下で) 実行されている場合、最初の方法は引き続き機能しますが、2 番目の方法は System.Net.WebException: HTTP 401: Unauthorized をスローします。
資格情報を手動で設定しようとしましたが (service.Credentials = new System.Net.NetworkCredential(login, password, domain);)、これは役に立ちません。
同様のシナリオを使用して、組み込みの SharePoint Web サービスを呼び出そうとしましたが、問題なく動作します。間違いを犯して申し訳ありません...一部のメソッドは、適切な権限がないと正常に動作しませんでした。
var service = new GroupsService();
service.Url = [url];
service.Credentials = System.Net.CredentialCache.DefaultCredentials;
service.SomeMethod();