C# 正在使用.Net调用服务Webservice

C# 正在使用.Net调用服务Webservice,c#,.net,web-services,servicenow,C#,.net,Web Services,Servicenow,我正在尝试从.Net调用Service Now的webservice,我可以让它在插入记录时正常工作,但我无法让任何gets正常工作。这是我的工作代码插入代码: public void insertTable(string tableName, string schema, string columnInfo, string shortDesrcipt, string longDescript) { using (ServiceNow_u_database_table tableRefe

我正在尝试从.Net调用Service Now的webservice,我可以让它在插入记录时正常工作,但我无法让任何
get
s正常工作。这是我的工作代码插入代码:

public void insertTable(string tableName, string schema, string columnInfo, string shortDesrcipt, string longDescript)
{
    using (ServiceNow_u_database_table tableReference = new ServiceNow_u_database_table())
    {
        insertResponse response = new insertResponse();

        System.Net.ICredentials cred = new System.Net.NetworkCredential(Properties.Settings.Default.UserName, Properties.Settings.Default.Password);
        tableReference.Credentials = cred;

        insert tableInsert = this.getTableData(tableName, schema, columnInfo, shortDesrcipt, longDescript);
        try
        {
            response = tableReference.insert(tableInsert);
        }
        catch (Exception error)
        {
            Console.WriteLine(error.Message);
        }
    }
}
那很好。以下代码不适用于
GET

using (ServiceNow_u_database_table tableReference = new ServiceNow_u_database_table())
{
    ServiceNowExport.com.servicenow.libertydev.u_database_table.getRecords recordGet = new getRecords();
    System.Net.ICredentials cred = new System.Net.NetworkCredential(Properties.Settings.Default.UserName, Properties.Settings.Default.Password);
    tableReference.Credentials = cred;

    recordGet.name = this._tablePrefix + tableName;
    getRecordsResponseGetRecordsResult[] response = tableReference.getRecords(recordGet);
    if (response != null && response.Count() > 0)
    {
        return true;
    }
}
当我运行该代码时,
response
总是
null
。我正在按照第页的说明做


我知道它正在连接,因为如果我关闭凭据行,就会出现未经授权的错误。你知道我做错了什么吗?谢谢

从C#Web服务上的ServiceNow wiki:

如果您在应用程序中收到来自web服务的“null”响应 客户端代码,那么您可能错过了本教程中的步骤 将elementFormDefault设置设置为“False”。。。请记住 在更改此代码后,根据WSDL重新编译代码 设置并保存它

可以在ServiceNow实例中的以下位置找到该属性:System 属性>Web服务。将其设置为false,则不应再 从getRecords响应接收null

以下是该酒店的屏幕截图:

如果您感兴趣,我已经编写了一组soap类来获取一些信息并将其放入servicenow。目前,我在工作中需要做的事情非常有限,但应该对任何人都有用


请随意查看

您为
Get
提供的代码片段似乎不完整。这里给出的是返回
true
而不是
response
。这可能是原因吗?不,在得到正确答案之前,将在if中检查响应。那个响应应该有它在其中找到的表(我知道在我为这个测试创建它时表就在那个里)。return true返回它找到了表,但是现在没有使用它,因为我还没有通过获取响应。这应该被接受为答案!非常有帮助+1太棒了,我希望我在3小时前就看到了这一点:/我在发布问题之前已经尝试过这个答案,但它对我不起作用。实际上,我最终从头开始构建自己的SOAP接口和类,完全忽略了它们的WSDL。这是让它发挥作用的唯一途径。我有完整的CRUD工作,但我不再在那家公司工作,并留下了代码。据我所知,他们今天仍在使用该代码。谢谢-但由于这个问题已经问了三年了,我已经忘记了。实际上,我最终从头开始构建自己的SOAP接口和类,完全忽略了它们的WSDL。这是让它发挥作用的唯一途径。我有完整的CRUD工作,但我不再在那家公司工作,并留下了代码。据我所知,他们今天仍在使用该代码。@VydorScope先生,您能和我们分享一下您的代码吗??你有Github profil吗??我想从你的经历中学习,先生,非常感谢much@Akira对不起,我很多年前离开了那家公司,不再有权访问该代码,也不再在.NET中工作。我怀疑我8年前提出的解决方案在这一点上是否有效。如果你能在.NET中找到一个更新得多的人来寻求帮助,你会更好。很抱歉