代码之家  ›  专栏  ›  技术社区  ›  Andomar

为使用webservice()属性声明的Web服务配置终结点

  •  0
  • Andomar  · 技术社区  · 16 年前

    我们有一个C Web服务,它使用属性声明自己。代码隐藏文件如下所示:

    [WebService(Namespace = "http://the.web.service.url/")]
    [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
    public sealed class TheWebservice : WebService
    {
        [WebMethod]
        public SomeObject TheFunction()
        ...
    

    Web服务已经工作了很长时间。最近,一个请求导致错误:

    最大字符串内容长度 超过配额(8192),而 正在读取XML数据。

    在四处搜索之后,我发现有一个设置maxStringContentLength可以增加最小值。文章说您可以在web.config中的 BasicHttpBinding 部分。然后您可以指定 basichttpbinding 在一个 endpoint 部分。但由于我们使用 WebService 属性在代码隐藏文件中,我们没有 端点 部分。

    有没有使用声明性属性指定端点的方法?或者,是否可以在不中断现有客户机的情况下从属性切换到web.config模式?我是不是把WCF和它的前身搞混了?

    1 回复  |  直到 15 年前
        1
  •  0
  •   Ladislav Mrnka    15 年前

    WebServiceAttribute用于ASMX Web服务。在WCF Web服务中使用basichttpbinding。这些技术不相关,因此在服务器的配置中设置basichttpbinding不会影响ASMX Web服务的行为。错误发生在哪里?在服务器上还是在客户机上?您的客户是基于WCF还是基于ASMX?

    编辑: 因为我之前的回答不清楚,所以我要补充说明。使用ASMX Web服务(基于WebServiceAttribute)时,不能使用WCF配置(System.ServiceModel)更改其行为。这是两种不同的API。但您可以使用基于WCF的客户端调用/使用ASMX Web服务,在特殊情况下,您可以使用基于ASMX的客户端调用WCF服务。