webserver需要注意哪些设置?

-一个大坑 2020-12-17 10:55:36
web调用webserver,前面是正常的,后来服务器更新补丁(KB4586830),就提示无法序列化,然后我加了很多log,发现不是程式里写的代码导致的,而是调用webservice时报的错,调用webservice需要做什么设定吗?
错误log: UploadCheck--WEB There was an error while trying to deserialize parameter XX:UploadResult. Please see InnerException for more details.

//server的返回结果Class
[WCF::MessageContract(WrapperName = "UploadDataResponse", WrapperNamespace = "XX")]
public partial class UploadDataResponse
{
private Wistron.LMS.BusinessEntities.GenericDataSet uploadResult;
private Wistron.LMS.BusinessEntities.Criteria criteria;

[WCF::MessageBodyMember(Namespace = "XX", Name = "UploadResult")]
public Wistron.LMS.BusinessEntities.GenericDataSet UploadResult
{
get { return uploadResult; }
set { uploadResult = value; }
}

[WCF::MessageBodyMember(Namespace = "XX", Name = "Criteria")]
public Wistron.LMS.BusinessEntities.Criteria Criteria
{
get { return criteria; }
set { criteria = value; }
}
}

//web接收返回结果Class
[System.Diagnostics.DebuggerStepThroughAttribute()]
[System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "4.0.0.0")]
[System.ServiceModel.MessageContractAttribute(WrapperName="UploadDataResponse", WrapperNamespace="XX", IsWrapped=true)]
public partial class UploadDataResponse {

[System.ServiceModel.MessageBodyMemberAttribute(Namespace="XX", Order=0)]
public System.Collections.Generic.Dictionary<string, object> Criteria;

[System.ServiceModel.MessageBodyMemberAttribute(Namespace="XX", Order=1)]
public Wistron.LMS.BusinessEntities.GenericDataSet UploadResult;

public UploadDataResponse() {
}

public UploadDataResponse(System.Collections.Generic.Dictionary<string, object> Criteria, Wistron.LMS.BusinessEntities.GenericDataSet UploadResult) {
this.Criteria = Criteria;
this.UploadResult = UploadResult;
}
}

//server端方法
public override UploadDataResponse UploadData(UploadDataRequest request)
{
Criteria resultCriteria = null;
UploadDataResponse response = new UploadDataResponse();
try
{
response.UploadResult = DispatcherLogic.UploadDataDispatcher((UploadDataType)request.UploadDataType, request.Criteria, request.UploadData, out resultCriteria);
response.Criteria = resultCriteria;
}
catch (Exception ex)
{
LogHelper.WriteLogs(DateTime.Now.ToString() + "UploadDataDispatcher:" + ex.Message);
}
return response;
}

//web端方法
public GenericDataSet UploadCheck(string plant, Criteria criteria, GenericDataSet genericDataTable)
{
PPServiceReference.PPServiceClient client = null;
try
{
client = ServiceClientManager<PPServiceReference.PPServiceClient>.Take(plant);
PPServiceReference.UploadDataRequest request = new PPServiceReference.UploadDataRequest() { UploadData = genericDataTable, UploadDataType = (int)UploadDataType.UploadCZCombineDN, Criteria = criteria };
PPServiceReference.UploadDataResponse response = client.UploadData(request);
return response.UploadResult;
}
catch (Exception ex)
{
LogHelper.WriteLogs("UploadCheck--WEB " + ex.Message);
return null;
}
finally
{
if (client != null) ServiceClientManager<PPServiceReference.PPServiceClient>.Return(ref client);
}
}
...全文
4105 21 打赏 收藏 转发到动态 举报
写回复
用AI写文章
21 条回复
切换为时间正序
请发表友善的回复…
发表回复
正怒月神 2020-12-23
  • 打赏
  • 举报
回复
引用 20 楼 -一个大坑 的回复:
[quote=引用 19 楼 正怒月神 的回复:] 你看看有没有额外的补丁去解决这个问题。
换个个方法,新建webservice接口,返回list,然后指定返回类型就可以了,看样子还是因为datatable识别不了[/quote] 机智
-一个大坑 2020-12-23
  • 打赏
  • 举报
回复
引用 19 楼 正怒月神 的回复:
你看看有没有额外的补丁去解决这个问题。
换个个方法,新建webservice接口,返回list,然后指定返回类型就可以了,看样子还是因为datatable识别不了
正怒月神 2020-12-21
  • 打赏
  • 举报
回复
引用 18 楼 -一个大坑 的回复:
[quote=引用 15 楼 正怒月神 的回复:][quote=引用 14 楼 -一个大坑 的回复:][quote=引用 13 楼 正怒月神 的回复:] 自己本机发布一下看看。 是发布,不是调试
没用,更新了那个补丁才会报错,电脑补丁和server的不一样 现在正式环境已经把补丁退了,但是se说后面还是要装[/quote] 如果是不定的关系,那么可能是不是对于xml的解析问题。 你看看解析xml工具的版本有没有差异。[/quote] 所以这个问题无解了吗,大佬[/quote] 应该不至于,但是我没有这个环境来测试。 你看看有没有额外的补丁去解决这个问题。
-一个大坑 2020-12-21
  • 打赏
  • 举报
回复
引用 15 楼 正怒月神 的回复:
[quote=引用 14 楼 -一个大坑 的回复:][quote=引用 13 楼 正怒月神 的回复:] 自己本机发布一下看看。 是发布,不是调试
没用,更新了那个补丁才会报错,电脑补丁和server的不一样 现在正式环境已经把补丁退了,但是se说后面还是要装[/quote] 如果是不定的关系,那么可能是不是对于xml的解析问题。 你看看解析xml工具的版本有没有差异。[/quote] 所以这个问题无解了吗,大佬
正怒月神 2020-12-18
  • 打赏
  • 举报
回复
引用 14 楼 -一个大坑 的回复:
[quote=引用 13 楼 正怒月神 的回复:] 自己本机发布一下看看。 是发布,不是调试
没用,更新了那个补丁才会报错,电脑补丁和server的不一样 现在正式环境已经把补丁退了,但是se说后面还是要装[/quote] 如果是不定的关系,那么可能是不是对于xml的解析问题。 你看看解析xml工具的版本有没有差异。
-一个大坑 2020-12-18
  • 打赏
  • 举报
回复
引用 13 楼 正怒月神 的回复:
自己本机发布一下看看。 是发布,不是调试
没用,更新了那个补丁才会报错,电脑补丁和server的不一样 现在正式环境已经把补丁退了,但是se说后面还是要装
正怒月神 2020-12-18
  • 打赏
  • 举报
回复
引用 12 楼 -一个大坑 的回复:
[quote=引用 11 楼 正怒月神 的回复:][quote=引用 10 楼 -一个大坑 的回复:][quote=引用 7 楼 正怒月神 的回复:] 你在try catch中把ex.innerMessage(具体名字我忘记了。inner开头的)输出出来看看
没太看懂提示,FieldCheck在web端也是可以点出来的。BusinessEntities是最下面应该不会存在引用异常。不过DataTable.Columns.Add(pi.Name, typeof(string));这样确实是没报错了。我在想是不是web端接收结果就是DataSet,而server端返回的DataSet里的DataTable的列是FieldCheck,和平常的列不一样,所以反序列没用FieldCheck,但是不知道类型反序列化成object应该不会报错吧 System.InvalidOperationException: Type 'Wistron.LMS.BusinessEntities.FieldCheck, Wistron.LMS.BusinessEntities, Version=1.0.0.258, Culture=neutral, PublicKeyToken=null' is not allowed here. See https://go.microsoft.com/fwlink/?linkid=2132227 for more information. [/quote] 你看一下发布的地方,有没有Wistron.LMS.BusinessEntities.FieldCheck, Wistron.LMS.BusinessEntities的dll引用[/quote] web和server的bin都有这个引用,对比也是一样的[/quote] 自己本机发布一下看看。 是发布,不是调试
-一个大坑 2020-12-18
  • 打赏
  • 举报
回复
引用 11 楼 正怒月神 的回复:
[quote=引用 10 楼 -一个大坑 的回复:][quote=引用 7 楼 正怒月神 的回复:] 你在try catch中把ex.innerMessage(具体名字我忘记了。inner开头的)输出出来看看
没太看懂提示,FieldCheck在web端也是可以点出来的。BusinessEntities是最下面应该不会存在引用异常。不过DataTable.Columns.Add(pi.Name, typeof(string));这样确实是没报错了。我在想是不是web端接收结果就是DataSet,而server端返回的DataSet里的DataTable的列是FieldCheck,和平常的列不一样,所以反序列没用FieldCheck,但是不知道类型反序列化成object应该不会报错吧 System.InvalidOperationException: Type 'Wistron.LMS.BusinessEntities.FieldCheck, Wistron.LMS.BusinessEntities, Version=1.0.0.258, Culture=neutral, PublicKeyToken=null' is not allowed here. See https://go.microsoft.com/fwlink/?linkid=2132227 for more information. [/quote] 你看一下发布的地方,有没有Wistron.LMS.BusinessEntities.FieldCheck, Wistron.LMS.BusinessEntities的dll引用[/quote] web和server的bin都有这个引用,对比也是一样的
-一个大坑 2020-12-18
  • 打赏
  • 举报
回复
引用 15 楼 正怒月神 的回复:
[quote=引用 14 楼 -一个大坑 的回复:][quote=引用 13 楼 正怒月神 的回复:] 自己本机发布一下看看。 是发布,不是调试
没用,更新了那个补丁才会报错,电脑补丁和server的不一样 现在正式环境已经把补丁退了,但是se说后面还是要装[/quote] 如果是不定的关系,那么可能是不是对于xml的解析问题。 你看看解析xml工具的版本有没有差异。[/quote] https://bbs.csdn.net/topics/396515306 可以先来这个贴子拿分
-一个大坑 2020-12-18
  • 打赏
  • 举报
回复
引用 15 楼 正怒月神 的回复:
[quote=引用 14 楼 -一个大坑 的回复:][quote=引用 13 楼 正怒月神 的回复:] 自己本机发布一下看看。 是发布,不是调试
没用,更新了那个补丁才会报错,电脑补丁和server的不一样 现在正式环境已经把补丁退了,但是se说后面还是要装[/quote] 如果是不定的关系,那么可能是不是对于xml的解析问题。 你看看解析xml工具的版本有没有差异。[/quote] 解析xml工具的版本 这个我不太清楚要怎么看
wanghui0380 2020-12-17
  • 打赏
  • 举报
回复
额,这玩意。你先确定你收到了啥。 涉及到多方对接得东西,你得先确定对方没问题,在保证自己没问题。对方如果有变动,你需要更新引用服务,重新生成代理
正怒月神 2020-12-17
  • 打赏
  • 举报
回复
引用 10 楼 -一个大坑 的回复:
[quote=引用 7 楼 正怒月神 的回复:] 你在try catch中把ex.innerMessage(具体名字我忘记了。inner开头的)输出出来看看
没太看懂提示,FieldCheck在web端也是可以点出来的。BusinessEntities是最下面应该不会存在引用异常。不过DataTable.Columns.Add(pi.Name, typeof(string));这样确实是没报错了。我在想是不是web端接收结果就是DataSet,而server端返回的DataSet里的DataTable的列是FieldCheck,和平常的列不一样,所以反序列没用FieldCheck,但是不知道类型反序列化成object应该不会报错吧 System.InvalidOperationException: Type 'Wistron.LMS.BusinessEntities.FieldCheck, Wistron.LMS.BusinessEntities, Version=1.0.0.258, Culture=neutral, PublicKeyToken=null' is not allowed here. See https://go.microsoft.com/fwlink/?linkid=2132227 for more information. [/quote] 你看一下发布的地方,有没有Wistron.LMS.BusinessEntities.FieldCheck, Wistron.LMS.BusinessEntities的dll引用
-一个大坑 2020-12-17
  • 打赏
  • 举报
回复
引用 7 楼 正怒月神 的回复:
你在try catch中把ex.innerMessage(具体名字我忘记了。inner开头的)输出出来看看
没太看懂提示,FieldCheck在web端也是可以点出来的。BusinessEntities是最下面应该不会存在引用异常。不过DataTable.Columns.Add(pi.Name, typeof(string));这样确实是没报错了。我在想是不是web端接收结果就是DataSet,而server端返回的DataSet里的DataTable的列是FieldCheck,和平常的列不一样,所以反序列没用FieldCheck,但是不知道类型反序列化成object应该不会报错吧 System.InvalidOperationException: Type 'Wistron.LMS.BusinessEntities.FieldCheck, Wistron.LMS.BusinessEntities, Version=1.0.0.258, Culture=neutral, PublicKeyToken=null' is not allowed here. See https://go.microsoft.com/fwlink/?linkid=2132227 for more information.
-一个大坑 2020-12-17
  • 打赏
  • 举报
回复
引用 7 楼 正怒月神 的回复:
你在try catch中把ex.innerMessage(具体名字我忘记了。inner开头的)输出出来看看
这次错误记录很多 System.InvalidOperationException: Type 'Wistron.LMS.BusinessEntities.FieldCheck, Wistron.LMS.BusinessEntities, Version=1.0.0.258, Culture=neutral, PublicKeyToken=null' is not allowed here. See https://go.microsoft.com/fwlink/?linkid=2132227 for more information. at System.Data.TypeLimiter.EnsureTypeIsAllowed(Type type, TypeLimiter capturedLimiter) at System.Data.DataColumn.UpdateColumnType(Type type, StorageType typeCode) at System.Data.DataColumn.set_DataType(Type value) at System.Data.XSDSchema.SetProperties(Object instance, XmlAttribute[] attrs) at System.Data.XSDSchema.HandleElementColumn(XmlSchemaElement elem, DataTable table, Boolean isBase) at System.Data.XSDSchema.HandleParticle(XmlSchemaParticle pt, DataTable table, ArrayList tableChildren, Boolean isBase) at System.Data.XSDSchema.HandleComplexType(XmlSchemaComplexType ct, DataTable table, ArrayList tableChildren, Boolean isNillable) at System.Data.XSDSchema.InstantiateTable(XmlSchemaElement node, XmlSchemaComplexType typeNode, Boolean isRef) at System.Data.XSDSchema.HandleTable(XmlSchemaElement node) at System.Data.XSDSchema.HandleDataSet(XmlSchemaElement node, Boolean isNewDataSet) at System.Data.XSDSchema.LoadSchema(XmlSchemaSet schemaSet, DataSet ds) at System.Data.DataSet.ReadXSDSchema(XmlReader reader, Boolean denyResolving) at System.Data.DataSet.ReadXml(XmlReader reader, XmlReadMode mode, Boolean denyResolving) at System.Data.DataSet.ReadXmlSerializable(XmlReader reader) at System.Data.DataSet.System.Xml.Serialization.IXmlSerializable.ReadXml(XmlReader reader) at System.Runtime.Serialization.XmlObjectSerializerReadContext.ReadIXmlSerializable(XmlSerializableReader xmlSerializableReader, XmlReaderDelegator xmlReader, XmlDataContract xmlDataContract, Boolean isMemberType) at System.Runtime.Serialization.XmlDataContract.ReadXmlValue(XmlReaderDelegator xmlReader, XmlObjectSerializerReadContext context) at System.Runtime.Serialization.XmlObjectSerializerReadContext.ReadDataContractValue(DataContract dataContract, XmlReaderDelegator reader) at System.Runtime.Serialization.XmlObjectSerializerReadContext.InternalDeserialize(XmlReaderDelegator reader, String name, String ns, Type declaredType, DataContract& dataContract) at System.Runtime.Serialization.XmlObjectSerializerReadContext.InternalDeserialize(XmlReaderDelegator xmlReader, Type declaredType, DataContract dataContract, String name, String ns) at System.Runtime.Serialization.DataContractSerializer.InternalReadObject(XmlReaderDelegator xmlReader, Boolean verifyObjectName, DataContractResolver dataContractResolver) at System.Runtime.Serialization.XmlObjectSerializer.ReadObjectHandleExceptions(XmlReaderDelegator reader, Boolean verifyObjectName, DataContractResolver dataContractResolver) at System.Runtime.Serialization.DataContractSerializer.ReadObject(XmlDictionaryReader reader, Boolean verifyObjectName) at System.ServiceModel.Dispatcher.DataContractSerializerOperationFormatter.PartInfo.ReadObject(XmlDictionaryReader reader, XmlObjectSerializer serializer) at System.ServiceModel.Dispatcher.DataContractSerializerOperationFormatter.DeserializeParameterPart(XmlDictionaryReader reader, PartInfo part, Boolean isRequest)
-一个大坑 2020-12-17
  • 打赏
  • 举报
回复
引用 5 楼 正怒月神 的回复:
[quote=引用 4 楼 -一个大坑 的回复:][quote=引用 3 楼 正怒月神 的回复:]Please see InnerException for more details 内部错误有吗
看不到更详细的信息,log记录只有这个[/quote] 错误是说,不能反序列化 deserialize parameter XX:UploadResult 确定传递的报文没有变化是吧? 编码会不会有问题? [/quote] webservice不能返回麻烦的类型吗?测试了一下,返回typeof(FieldCheck)报错,返回typeof(string)可以 FieldCheck这个类是以前建的model,里面包含了提示信息以及是否异常等,感觉也不算特别麻烦

            GenericDataSet rstDataSet = new GenericDataSet("ResultData");
            GenericDataTable rstDataTable = new GenericDataTable("UploadTable");
            //rstDataTable.Columns.Add("CheckResult", typeof(FieldCheck));
            //rstDataTable.Columns.Add("NCMP", typeof(FieldCheck));
            //rstDataTable.Columns.Add("PAKNO", typeof(FieldCheck));
            //rstDataTable.Columns.Add("PODDATE", typeof(FieldCheck));

            rstDataTable.Columns.Add("CheckResult", typeof(string));
            rstDataTable.Columns.Add("NCMP", typeof(string));
            rstDataTable.Columns.Add("PAKNO", typeof(string));
            rstDataTable.Columns.Add("PODDATE", typeof(string));
            rstDataSet.Tables.Add(rstDataTable);
正怒月神 2020-12-17
  • 打赏
  • 举报
回复
引用 6 楼 -一个大坑 的回复:
[quote=引用 5 楼 正怒月神 的回复:][quote=引用 4 楼 -一个大坑 的回复:][quote=引用 3 楼 正怒月神 的回复:]Please see InnerException for more details 内部错误有吗
看不到更详细的信息,log记录只有这个[/quote] 错误是说,不能反序列化 deserialize parameter XX:UploadResult 确定传递的报文没有变化是吧? 编码会不会有问题? [/quote] 传递的一直是这个,指定编码要在哪指定,config还是什么地方

            #region 产生结果集
            //GenericDataSet rstDataSet = new GenericDataSet("ResultData");
            try{
            GenericDataTable rstDataTable = new GenericDataTable("UploadTable");
            rstDataSet = UploadHelper.CreateGenericDataSet<CZCombineDN>(rstDataSet, rstDataTable, uploadDataList);
             }
            catch (Exception ex)
            {
                LogHelper.WriteLogs("UploadCheck--CreateGenericDataSet   " + ex.Message);
            }

            LogHelper.WriteLogs("out Server");
            return rstDataSet;
[/quote] 你在try catch中把ex.innerMessage(具体名字我忘记了。inner开头的)输出出来看看
-一个大坑 2020-12-17
  • 打赏
  • 举报
回复
引用 5 楼 正怒月神 的回复:
[quote=引用 4 楼 -一个大坑 的回复:][quote=引用 3 楼 正怒月神 的回复:]Please see InnerException for more details 内部错误有吗
看不到更详细的信息,log记录只有这个[/quote] 错误是说,不能反序列化 deserialize parameter XX:UploadResult 确定传递的报文没有变化是吧? 编码会不会有问题? [/quote] 传递的一直是这个,指定编码要在哪指定,config还是什么地方

            #region 产生结果集
            //GenericDataSet rstDataSet = new GenericDataSet("ResultData");
            try{
            GenericDataTable rstDataTable = new GenericDataTable("UploadTable");
            rstDataSet = UploadHelper.CreateGenericDataSet<CZCombineDN>(rstDataSet, rstDataTable, uploadDataList);
             }
            catch (Exception ex)
            {
                LogHelper.WriteLogs("UploadCheck--CreateGenericDataSet   " + ex.Message);
            }

            LogHelper.WriteLogs("out Server");
            return rstDataSet;
正怒月神 2020-12-17
  • 打赏
  • 举报
回复
引用 4 楼 -一个大坑 的回复:
[quote=引用 3 楼 正怒月神 的回复:]Please see InnerException for more details 内部错误有吗
看不到更详细的信息,log记录只有这个[/quote] 错误是说,不能反序列化 deserialize parameter XX:UploadResult 确定传递的报文没有变化是吧? 编码会不会有问题?
-一个大坑 2020-12-17
  • 打赏
  • 举报
回复
引用 3 楼 正怒月神 的回复:
Please see InnerException for more details 内部错误有吗
看不到更详细的信息,log记录只有这个
正怒月神 2020-12-17
  • 打赏
  • 举报
回复
Please see InnerException for more details 内部错误有吗
加载更多回复(1)

12,162

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 Web Services
社区管理员
  • Web Services社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧