为使用WebService()属性声明的Web服务配置端点

时间:2010-10-13 19:48:02

标签: c# asp.net wcf web-services

我们有一个使用属性声明自己的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可以增加最大尺寸。帖子说您可以在BasicHttpBinding部分的Web.config中配置此设置。然后,您可以在BasicHttpBinding部分指定endpoint。但是,由于我们使用代码隐藏文件中的WebService属性声明了webservice,因此我们没有endpoint部分。

有没有办法使用声明属性指定端点?或者,是否可以在不破坏现有客户端的情况下从属性切换到web.config模式?我在这里混淆了WCF及其前身吗?

1 个答案:

答案 0 :(得分:0)

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

修改:因为我之前的回答并不清楚,所以我正在添加此说明。当您使用ASMX Web服务(基于WebServiceAttribute)时,您无法使用WCF配置(system.serviceModel)来更改其行为。这是两个不同的API。但是您可以使用基于WCF的客户端来调用/使用ASMX Web服务,在特殊情况下,您可以使用基于ASMX的客户端来调用WCF服务。