【问题标题】:Failure by working with webservice使用 web 服务失败
【发布时间】:2013-01-21 10:04:43
【问题描述】:

这几天我测试了一个小应用程序,它应该被 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 References\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());
        }
  }

我测试了不同的 web 服务引用。 你有什么想法,因为我失败了吗?你有什么好榜样吗?

谢谢。


谢谢。我之前测试过的网址 - 失败时没有变化。我也遇到了这个失败:

异常:抛出:“Die Datei oder Assembly “NeuerTestWebservice_4_2.XmlSerializers,版本=1.0.0.0, Culture=neutral, PublicKeyToken=null" oder eine Abhängigkeit davon wurde nicht gefunden。 Das System kann die angegebene Datei nicht 找到。” (System.IO.FileNotFoundException) A System.IO.FileNotFoundException 被抛出:“Die Datei oder Assembly “NeuerTestWebservice_4_2.XmlSerializers,版本=1.0.0.0, Culture=neutral, PublicKeyToken=null" oder eine Abhängigkeit davon wurde nicht gefunden。 Das System kann die angegebene Datei nicht 找到。”

webservice初始化后直接:webserviceSCC_Sys.Lists service = new webserviceSCC_Sys.Lists();对这些信息有帮助吗?

【问题讨论】:

  • 不 - 它是一个共享点网络服务

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


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    这是我调用两个不同的 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);
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-10-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-05-07
      相关资源
      最近更新 更多