Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/wcf/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
ASP.NET应用程序中的readerQuotas问题_Asp.net_Wcf_Web Services_Readerquotas - Fatal编程技术网

ASP.NET应用程序中的readerQuotas问题

ASP.NET应用程序中的readerQuotas问题,asp.net,wcf,web-services,readerquotas,Asp.net,Wcf,Web Services,Readerquotas,我有一个ASP.NET4.0应用程序 Web服务使用链接源(服务实现)的.svc文件托管。 web服务.svc文件位于应用程序根目录的WebServs目录中:MyApp/WebServs/mysvc.svc 使用web.config(根目录中)设置web服务 好的 调用web服务时,我使用例程创建通道,以封装此常用逻辑: public static ISRV GetService() { try { // Create the service endpoint Basic

我有一个ASP.NET4.0应用程序

Web服务使用链接源(服务实现)的
.svc
文件托管。 web服务
.svc
文件位于应用程序根目录的
WebServs
目录中:
MyApp/WebServs/mysvc.svc

使用
web.config
(根目录中)设置web服务


好的

调用web服务时,我使用例程创建通道,以封装此常用逻辑:

public static ISRV GetService() {
  try {
    // Create the service endpoint
    BasicHttpBinding bhttpb = new BasicHttpBinding(
      BasicHttpSecurityMode.TransportCredentialOnly);
    bhttpb.MaxReceivedMessageSize = 2147483647;
    bhttpb.ReaderQuotas = new System.Xml.XmlDictionaryReaderQuotas();
    bhttpb.ReaderQuotas.MaxArrayLength = 16384);
    bhttpb.ReaderQuotas.MaxBytesPerRead = 24096);
    bhttpb.ReaderQuotas.MaxDepth = 10000);
    bhttpb.ReaderQuotas.MaxNameTableCharCount = 16384);
    bhttpb.ReaderQuotas.MaxStringContentLength = 1310720);

    ServiceEndpoint httpEndpoint =
      new ServiceEndpoint(
        ContractDescription.GetContract(typeof(ISRV)),
        bhttpb,
        new EndpointAddress());

    // Create channel factory and get proper channel for service.
    ChannelFactory<ISRV> channelFactory = new ChannelFactory<ISRV>(httpEndpoint);

    IDAS svc = channelFactory.CreateChannel();

    return svc;
  } catch (Exception e) {
    throw new DASException("DAS Exception: " + e.Message);
  }
}
publicstaticisrvgetservice(){
试一试{
//创建服务端点
BasicHttpBinding bhttpb=新的BasicHttpBinding(
基本TPSecurityMode.TransportCredentialOnly);
bhttpb.MaxReceivedMessageSize=2147483647;
bhttpb.ReaderQuotas=new System.Xml.XmlDictionaryReaderQuotas();
bhttpb.ReaderQuotas.MaxArrayLength=16384);
bhttpb.ReaderQuotas.MaxBytesPerRead=24096);
bhttpb.ReaderQuotas.MaxDepth=10000);
bhttpb.ReaderQuotas.MaxNameTableCharCount=16384);
bhttpb.ReaderQuotas.MaxStringContentLength=1310720);
ServiceEndpoint httpEndpoint=
新ServiceEndpoint(
合同说明.GetContract(类型(ISRV)),
bhttpb,
新端点地址());
//创建渠道工厂并获得适当的服务渠道。
ChannelFactory ChannelFactory=新的ChannelFactory(httpEndpoint);
IDAS svc=channelFactory.CreateChannel();
返回svc;
}捕获(例外e){
抛出新的DASException(“DAS异常:+e.Message”);
}
}
此例程由客户端调用。而
Web.config
用于配置服务服务器端

当我尝试使用大消息(小消息)执行服务时,我得到:

格式化程序在尝试反序列化 消息:尝试反序列化参数时出错 )). InnerException消息 was'反序列化类型的对象时出错 ((类型)), App_Code.s5qoir2n,版本=0.0.0.0,文化=中性, PublicKeyToken=null]]。最大字符串内容长度配额(8192) 读取XML数据时已超过。这一配额可能会增加 通过更改 创建XML读取器时使用的XmlDictionaryReaderQuotas对象。 第31行,位置1309'。有关更多详细信息,请参阅InnerException

我不明白。服务和客户端都有公共设置,这会读取defaut值?????此外,我在StackOverflow中按照这里的说明做了很多其他用户做的事情

请帮帮我。谢谢您指定了WCF 4.0(确切地说是ASP.NET 4.0),所以我想知道您遇到的问题是否是您实际遇到了一个默认端点,除非被重写,否则该端点将使用绑定的默认值

WCF 4.0将提供一个默认端点(设置为服务所在的位置)。该默认端点最有可能使用绑定的默认值(MaxStringContentLength为8192)

既然您在WebServs目录(根目录)上方的目录中为服务进行了所有配置,那么它可能会求助于默认端点?我确实意识到Web.CONFIG文件将继承上面的这些文件,但是如果你还没有考虑,这是至少要考虑的事情。 有关4.0的默认端点和其他更改的更多信息,请参见此处:

您指定了WCF 4.0(确切地说,是ASP.NET 4.0),因此我想知道您遇到的问题是否是您实际遇到了默认端点,除非被覆盖,否则将使用默认值进行绑定

WCF 4.0将提供一个默认端点(设置为服务所在的位置)。该默认端点最有可能使用绑定的默认值(MaxStringContentLength为8192)

既然您在WebServs目录(根目录)上方的目录中为服务进行了所有配置,那么它可能会求助于默认端点?我确实意识到Web.CONFIG文件将继承上面的这些文件,但是如果你还没有考虑,这是至少要考虑的事情。
有关4.0的默认端点和其他更改的更多信息,请参见此处:

您的观点是正确的,我需要插入一个常规绑定,而特定的绑定现在可以工作了……这个答案解决了我遇到的类似问题。非常感谢。你的观点是正确的,我需要插入一个通用的绑定,具体的现在可以工作了…这个答案解决了我遇到的类似问题。非常感谢。
public static ISRV GetService() {
  try {
    // Create the service endpoint
    BasicHttpBinding bhttpb = new BasicHttpBinding(
      BasicHttpSecurityMode.TransportCredentialOnly);
    bhttpb.MaxReceivedMessageSize = 2147483647;
    bhttpb.ReaderQuotas = new System.Xml.XmlDictionaryReaderQuotas();
    bhttpb.ReaderQuotas.MaxArrayLength = 16384);
    bhttpb.ReaderQuotas.MaxBytesPerRead = 24096);
    bhttpb.ReaderQuotas.MaxDepth = 10000);
    bhttpb.ReaderQuotas.MaxNameTableCharCount = 16384);
    bhttpb.ReaderQuotas.MaxStringContentLength = 1310720);

    ServiceEndpoint httpEndpoint =
      new ServiceEndpoint(
        ContractDescription.GetContract(typeof(ISRV)),
        bhttpb,
        new EndpointAddress());

    // Create channel factory and get proper channel for service.
    ChannelFactory<ISRV> channelFactory = new ChannelFactory<ISRV>(httpEndpoint);

    IDAS svc = channelFactory.CreateChannel();

    return svc;
  } catch (Exception e) {
    throw new DASException("DAS Exception: " + e.Message);
  }
}