我们有一个使用属性声明自己的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及其前身吗?
答案 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服务。