2010-10-13 58 views
0

我們有一個使用屬性聲明自己的C#Web服務。代碼隱藏文件如下所示:爲使用WebService()聲明的Web服務配置端點屬性

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

Web服務已運行很長一段時間了。近日,一個請求導致錯誤:

The maximum string content length quota (8192) has been exceeded while reading XML data.

周圍搜索後,我發現有一個設置maxStringContentLength可以增加meaximum大小。這篇文章說你可以在BasicHttpBinding部分的Web.config中配置這個設置。然後,您可以在endpoint部分指定BasicHttpBinding。但是由於我們在代碼隱藏文件中使用WebService屬性聲明web服務,因此我們沒有endpoint部分。

有沒有一種方法來指定使用聲明屬性的端點?或者,是否可以從屬性切換到web.config模式而不破壞現有客戶端?我在這裏混淆了WCF和它的前任嗎?

回答

0

WebServiceAttribute用於ASMX Web服務。 BasicHttpBinding用於WCF Web服務。這些技術不相關,因此在服務器上將BasicHttpBinding設置爲配置不會影響ASMX Web服務的行爲。錯誤發生在哪裏?在服務器上還是在客戶端上?您的客戶端WCF或ASMX是基於什麼?

編輯:因爲我以前的答案不清楚,我補充說明。當您使用ASMX Web服務時(基於WebServiceAttribute),您不能使用WCF配置(system.serviceModel)來更改其行爲。這是兩種不同的API。但是您可以使用基於WCF的客戶端來調用/使用ASMX Web服務,並且在特殊情況下您可以使用基於ASMX的客戶端來調用WCF服務。

+0

清除了一些東西:我認爲WCF是仍然使用ASMX文件的ASMX的演變。我們絕對使用ASMX。所以我想我的問題是,有沒有辦法在ASMX文件中設置maxStringContentLength? – Andomar 2010-10-14 09:34:55

+0

對,現在我知道這一切都是有道理的。我們使用WCF客戶端連接到ASMX服務。使用maxStringContentLength更改客戶端配置可解決問題。謝謝! – Andomar 2010-10-14 09:51:00

+0

-1 - 做什麼OP並使用WCF客戶端來使用WCF服務沒有任何問題。他的修正是正確的 - 改變客戶端的參數,這是異常來自哪裏。 – 2010-10-21 20:51:31

相關問題