通过使用webservice失败

时间:2013-02-06 09:04:13

标签: c# web-services sharepoint-2010 visual-studio-2012 webservice-client

我测试了一个小应用程序,应该通过webservice读取SPList并显示内容。不幸的是它不起作用。我总是遇到同样的失败:

  

System.Web.Services.Protocols.SoapException:类型异常   抛出了“Microsoft.SharePoint.SoapServer.SoapServerException”。

     

贝   System.Web.Services.Protocols.SoapHttpClientProtocol.ReadResponse(SoapClientMessage   消息,WebResponse响应,流responseStream,布尔值   asyncCall)

     

贝   System.Web.Services.Protocols.SoapHttpClientProtocol.Invoke(String methodName,Object []参数)

     

bei NeuerTestWebservice_4_2.webserviceSCC.Lists.GetListItems(String listName,String viewName,XmlNode query,XmlNode viewFields,String   rowLimit,XmlNode queryOptions,String webID)in   d:\ VisualStudio2012 \ WebserviceTests \ NeuerTestWebservice_4_2 \ NeuerTestWebservice_4_2 \ WEB   参考文献\ webserviceSCC \ Reference.cs:Zeile 455。

     

bei NeuerTestWebservice_4_2.Form1.btnFill_Click(Object sender,EventArgs e)in   d:\ VisualStudio2012 \ WebserviceTests \ NeuerTestWebservice_4_2 \ NeuerTestWebservice_4_2 \ Form1.cs:Zeile 30。

我的网络参考如下所示:http://rootwebsite.de/_vti_bin/Lists.asmx?wsdl/soap(好的 - 目前这是一个网站,但我想选择网站,稍后再列出) 这是我的代码:

 ...

    private void btnFill_Click(object sender, EventArgs e)
    {
        try
        {
           webserviceSCC.Lists service = new webserviceSCC.Lists();
           service.UseDefaultCredentials = true;

           XmlNode nodes = service.GetList("Inhalts- und Strukturberichte");  //don´t get a failure, if I add "?wsdl/soap" to the Webservice-Referenz ("/_vti_bin/Lists.asmx?wsdl/soap")
           XmlNode listItems = service.GetListItems("Inhalts- und Strukturberichte", "Alle Elemente", null, null, "100", null, null); //here (GetListItems) I get the failure always
          //XmlNode listItems = service.GetListItems("Inhalts- und Strukturberichte", null, null, viewFields, null, null, null);

                    ...
        }
        catch (Exception ex)
        {
            MessageBox.Show(ex.ToString());
        }
  }

我测试了不同的webservice-references。 你知道吗,因为我失败了吗?你有一个很好的例子吗?

感谢。


谢谢你。我之前测试过的网址 - 失败并没有改变。我也失败了:

  

异常:抛出:“Die Datei oder Assembly   “NeuerTestWebservice_4_2.XmlSerializers,Version = 1.0.0.0,   Culture = neutral,PublicKeyToken = null“oineeineAbhängigkeitdavon   wurde nicht gefunden。 Das System kann die angegebene Datei nicht   finden。“(System.IO.FileNotFoundException)A   抛出了System.IO.FileNotFoundException:“Die Datei oder Assembly   “NeuerTestWebservice_4_2.XmlSerializers,Version = 1.0.0.0,   Culture = neutral,PublicKeyToken = null“oineeineAbhängigkeitdavon   wurde nicht gefunden。 Das System kann die angegebene Datei nicht   芬登“。

初始化webservice后直接

:webserviceSCC_Sys.Lists service = new webserviceSCC_Sys.Lists();帮助了解这些信息?

2 个答案:

答案 0 :(得分:1)

这是一种方法,我可以调用两个不同的Web服务,它可以正常工作。我怀疑你需要在你的身上指定service.Url属性。

(注意我正在使用using语句来正确处理web服务。)

public void TestPermissions(String objectName, String objectType, LoggedInUserDetails userDetails, string siteUrl)
{
    XmlNode perms;
    XmlNode userInfo;
    XmlNode permissions;
    XmlNode rolesFromUser;

    using (SharePermissions.Permissions permissionService = new SharePermissions.Permissions())
    {
        List<object> names = new List<object>();
        permissionService.Credentials = new NetworkCredential(
                userDetails.UserName,
                Decrypt(userDetails.Password, "utrfirfu7j6r" + userDetails.MacAddress));
        permissionService.Url = siteUrl + @"/_vti_bin/Permissions.asmx";

        perms = permissionService.GetPermissionCollection(objectName, objectType);
    }

    using (ShareGroups.UserGroup userGroupService = new ShareGroups.UserGroup())
    {
        userGroupService.Url = siteUrl + @"/_vti_bin/UserGroup.asmx";
        userGroupService.Credentials = new NetworkCredential(
            userDetails.UserName,
            Decrypt(userDetails.Password, "asdasdasdsad" + userDetails.MacAddress));

        permissions = userGroupService.GetRolesAndPermissionsForCurrentUser();
        userInfo = userGroupService.GetUserInfo(userDetails.ResolvedUserName);
    }
}

答案 1 :(得分:1)

您的GetListItems()参数导致错误。有关示例,请参阅http://msdn.microsoft.com/en-us/library/websvclists.lists.getlistitems.aspx。根据文档,viewName参数(2nd)应该是视图的Guid,或者是默认视图的空字符串,而不是视图的名称。