通过C#服务引用使用Java Web服务
关于如何使用C#中的Web引用来实现这一点,有很多问题,但我知道如何做到这一点。我试图实现的是拥有一个可移植的dll,它使用我可以在项目中引用的Java Web服务,而不是复制功能。其中一点是,对于Web引用,请求的通过C#服务引用使用Java Web服务,c#,java,web-services,web-config,wcf-binding,C#,Java,Web Services,Web Config,Wcf Binding,关于如何使用C#中的Web引用来实现这一点,有很多问题,但我知道如何做到这一点。我试图实现的是拥有一个可移植的dll,它使用我可以在项目中引用的Java Web服务,而不是复制功能。其中一点是,对于Web引用,请求的KeepAlive设置为true。这不适用于我正在开发的环境,它必须是false。我对Web引用所做的是创建一个继承SoapHttpClientProtocol的抽象类,并将Reference.cs更改为从抽象类继承。抽象类如下所示: [System.Web.Services.Web
KeepAlive
设置为true
。这不适用于我正在开发的环境,它必须是false
。我对Web引用所做的是创建一个继承SoapHttpClientProtocol
的抽象类,并将Reference.cs更改为从抽象类继承。抽象类如下所示:
[System.Web.Services.WebServiceBinding(Name = "JavaWebReferenceProxy")]
public abstract class JavaWebReferenceProxy : SoapHttpClientProtocol
{
public JavaWebReferenceProxy()
{
base.Timeout = Settings.Instance.SoapTimeout;
}
protected override WebRequest GetWebRequest(Uri uri)
{
WebRequest rq = base.GetWebRequest(uri);
((HttpWebRequest)rq).KeepAlive = Settings.Instance.SoapKeepAlive;
return rq;
}
}
这允许我重写GetWebRequest
和构造函数来设置web.config中的值。我想知道如何通过对JavaWeb服务的服务引用来做到这一点。我在4.0中找到了简化的serviceModel
部分的一些示例(这是我正在使用的框架),但是我还需要指定url和超时。我不确定是否可以使用简化的服务模型
,或者是否需要使用完整的实现。我也不确定是否可以使用服务参考。我只是在寻找一些指导,如果有人已经实现了这样的东西
在我的配置文件中,
serviceModel
部分应该是什么样子?我需要能够指定的三件事是URL、超时和保持活动状态。提前谢谢。您需要定制装订。试试这个:
<system.serviceModel>
<bindings>
<customBinding>
<binding name="myBinding" sendTimout="00:05:00">
<textMessageEncoding messageVersion="Soap11" />
<httpTransport keepAliveEnabled="false" />
</binding>
</customBinding>
</bindings>
<client>
<endpoint name="myEndpointName" address="http://..." binding="customBinding"
bindingConfiguration="myBinding" contract="MyReference.IMyService" />
</client>
</system.serviceModel>
SendTimeout应该为操作完成(包括接收响应)设置超时,KeepAliveEnabled控制持久HTTP连接,edpoint中的地址是服务的地址。我必须增加readerQuotas的大小,但这非常有效。非常感谢你的帮助!