拥有本地控制台托管的WCF服务。在dll项目的Web引用中添加了相同的内容。用于我的asp .net页面。
代码:
PrepaidManagementService proxy = null;
try
{
proxy = new PrepaidManagementService();
res = proxy.balanceUsageSummary(balanceUsageSummaryRequestDtoObj); // Timeout happening here.
}
catch (TimeoutException e)
{
res.returnMessage = e.Message;
proxy.Abort();
}
catch (Exception e)
{
res.returnMessage = e.Message;
proxy.Abort();
throw;
}
//Reference.cs
[System.CodeDom.Compiler.GeneratedCodeAttribute("System.Web.Services", "2.0.50727.3053")]
[System.Diagnostics.DebuggerStepThroughAttribute()]
[System.ComponentModel.DesignerCategoryAttribute("code")]
[System.Web.Services.WebServiceBindingAttribute(Name="WSHttpBinding_IPrepaidManagementService", Namespace="http://tempuri.org/")]
[System.Xml.Serialization.XmlIncludeAttribute(typeof(prepaidResponseDto))]
[System.Xml.Serialization.XmlIncludeAttribute(typeof(responseDto))]
[System.Xml.Serialization.XmlIncludeAttribute(typeof(OnePortalBaseDto))]
public partial class PrepaidManagementService : System.Web.Services.Protocols.SoapHttpClientProtocol {
private System.Threading.SendOrPostCallback balanceUsageSummaryOperationCompleted;
private System.Threading.SendOrPostCallback getAvailableMyCreditTopUpsOperationCompleted;
private System.Threading.SendOrPostCallback applyMyCreditTopUpOperationCompleted;
private bool useDefaultCredentialsSetExplicitly;
/// <remarks/>
public PrepaidManagementService() {
this.SoapVersion = System.Web.Services.Protocols.SoapProtocolVersion.Soap12;
this.Url = "http://localhost:8733/TestXSD/PrepaidManagementService/";
if ((this.IsLocalFileSystemWebService(this.Url) == true)) {
this.UseDefaultCredentials = true;
this.useDefaultCredentialsSetExplicitly = false;
}
else {
this.useDefaultCredentialsSetExplicitly = true;
}
}
public new string Url {
get {
return base.Url;
}
set {
if ((((this.IsLocalFileSystemWebService(base.Url) == true)
&& (this.useDefaultCredentialsSetExplicitly == false))
&& (this.IsLocalFileSystemWebService(value) == false))) {
base.UseDefaultCredentials = false;
}
base.Url = value;
}
}
public new bool UseDefaultCredentials {
get {
return base.UseDefaultCredentials;
}
set {
base.UseDefaultCredentials = value;
this.useDefaultCredentialsSetExplicitly = true;
}
}
/// <remarks/>
public event balanceUsageSummaryCompletedEventHandler balanceUsageSummaryCompleted;
/// <remarks/>
public event getAvailableMyCreditTopUpsCompletedEventHandler getAvailableMyCreditTopUpsCompleted;
/// <remarks/>
public event applyMyCreditTopUpCompletedEventHandler applyMyCreditTopUpCompleted;
/// <remarks/>
[System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://tempuri.org/IPrepaidManagementService/balanceUsageSummary", RequestNamespace="http://tempuri.org/", ResponseNamespace="http://tempuri.org/", Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Wrapped)]
[return: System.Xml.Serialization.XmlElementAttribute(IsNullable=true)]
public balanceUsageSummaryResponseDto balanceUsageSummary([System.Xml.Serialization.XmlElementAttribute(IsNullable=true)] balanceUsageSummaryRequestDto balanceUsageSummaryRequestDtoObj) {
object[] results = this.Invoke("balanceUsageSummary", new object[] {
balanceUsageSummaryRequestDtoObj});
return ((balanceUsageSummaryResponseDto)(results[0]));
}
/// <remarks/>
public void balanceUsageSummaryAsync(balanceUsageSummaryRequestDto balanceUsageSummaryRequestDtoObj) {
this.balanceUsageSummaryAsync(balanceUsageSummaryRequestDtoObj, null);
}
/// <remarks/>
public void balanceUsageSummaryAsync(balanceUsageSummaryRequestDto balanceUsageSummaryRequestDtoObj, object userState) {
if ((this.balanceUsageSummaryOperationCompleted == null)) {
this.balanceUsageSummaryOperationCompleted = new System.Threading.SendOrPostCallback(this.OnbalanceUsageSummaryOperationCompleted);
}
this.InvokeAsync("balanceUsageSummary", new object[] {
balanceUsageSummaryRequestDtoObj}, this.balanceUsageSummaryOperationCompleted, userState);
}
private void OnbalanceUsageSummaryOperationCompleted(object arg) {
if ((this.balanceUsageSummaryCompleted != null)) {
System.Web.Services.Protocols.InvokeCompletedEventArgs invokeArgs = ((System.Web.Services.Protocols.InvokeCompletedEventArgs)(arg));
this.balanceUsageSummaryCompleted(this, new balanceUsageSummaryCompletedEventArgs(invokeArgs.Results, invokeArgs.Error, invokeArgs.Cancelled, invokeArgs.UserState));
}
}
/// <remarks/>
[System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://tempuri.org/IPrepaidManagementService/getAvailableMyCreditTopUps", RequestNamespace="http://tempuri.org/", ResponseNamespace="http://tempuri.org/", Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Wrapped)]
[return: System.Xml.Serialization.XmlElementAttribute(IsNullable=true)]
public getAvailableMyCreditTopUpsResponseDto getAvailableMyCreditTopUps([System.Xml.Serialization.XmlElementAttribute(IsNullable=true)] getAvailableMyCreditTopUpsRequestDto getAvailableMyCreditTopUpsRequestDtoObj) {
object[] results = this.Invoke("getAvailableMyCreditTopUps", new object[] {
getAvailableMyCreditTopUpsRequestDtoObj});
return ((getAvailableMyCreditTopUpsResponseDto)(results[0]));
}
/// <remarks/>
public void getAvailableMyCreditTopUpsAsync(getAvailableMyCreditTopUpsRequestDto getAvailableMyCreditTopUpsRequestDtoObj) {
this.getAvailableMyCreditTopUpsAsync(getAvailableMyCreditTopUpsRequestDtoObj, null);
}
/// <remarks/>
public void getAvailableMyCreditTopUpsAsync(getAvailableMyCreditTopUpsRequestDto getAvailableMyCreditTopUpsRequestDtoObj, object userState) {
if ((this.getAvailableMyCreditTopUpsOperationCompleted == null)) {
this.getAvailableMyCreditTopUpsOperationCompleted = new System.Threading.SendOrPostCallback(this.OngetAvailableMyCreditTopUpsOperationCompleted);
}
this.InvokeAsync("getAvailableMyCreditTopUps", new object[] {
getAvailableMyCreditTopUpsRequestDtoObj}, this.getAvailableMyCreditTopUpsOperationCompleted, userState);
}
private void OngetAvailableMyCreditTopUpsOperationCompleted(object arg) {
if ((this.getAvailableMyCreditTopUpsCompleted != null)) {
System.Web.Services.Protocols.InvokeCompletedEventArgs invokeArgs = ((System.Web.Services.Protocols.InvokeCompletedEventArgs)(arg));
this.getAvailableMyCreditTopUpsCompleted(this, new getAvailableMyCreditTopUpsCompletedEventArgs(invokeArgs.Results, invokeArgs.Error, invokeArgs.Cancelled, invokeArgs.UserState));
}
}
/// <remarks/>
[System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://tempuri.org/IPrepaidManagementService/applyMyCreditTopUp", RequestNamespace="http://tempuri.org/", ResponseNamespace="http://tempuri.org/", Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Wrapped)]
[return: System.Xml.Serialization.XmlElementAttribute(IsNullable=true)]
public applyMyCreditTopUpResponseDto applyMyCreditTopUp([System.Xml.Serialization.XmlElementAttribute(IsNullable=true)] applyMyCreditTopUpRequestDto applyMyCreditTopUpRequestDtoObj) {
object[] results = this.Invoke("applyMyCreditTopUp", new object[] {
applyMyCreditTopUpRequestDtoObj});
return ((applyMyCreditTopUpResponseDto)(results[0]));
}
/// <remarks/>
public void applyMyCreditTopUpAsync(applyMyCreditTopUpRequestDto applyMyCreditTopUpRequestDtoObj) {
this.applyMyCreditTopUpAsync(applyMyCreditTopUpRequestDtoObj, null);
}
/// <remarks/>
public void applyMyCreditTopUpAsync(applyMyCreditTopUpRequestDto applyMyCreditTopUpRequestDtoObj, object userState) {
if ((this.applyMyCreditTopUpOperationCompleted == null)) {
this.applyMyCreditTopUpOperationCompleted = new System.Threading.SendOrPostCallback(this.OnapplyMyCreditTopUpOperationCompleted);
}
this.InvokeAsync("applyMyCreditTopUp", new object[] {
applyMyCreditTopUpRequestDtoObj}, this.applyMyCreditTopUpOperationCompleted, userState);
}
private void OnapplyMyCreditTopUpOperationCompleted(object arg) {
if ((this.applyMyCreditTopUpCompleted != null)) {
System.Web.Services.Protocols.InvokeCompletedEventArgs invokeArgs = ((System.Web.Services.Protocols.InvokeCompletedEventArgs)(arg));
this.applyMyCreditTopUpCompleted(this, new applyMyCreditTopUpCompletedEventArgs(invokeArgs.Results, invokeArgs.Error, invokeArgs.Cancelled, invokeArgs.UserState));
}
}
/// <remarks/>
public new void CancelAsync(object userState) {
base.CancelAsync(userState);
}
private bool IsLocalFileSystemWebService(string url) {
if (((url == null)
|| (url == string.Empty))) {
return false;
}
System.Uri wsUri = new System.Uri(url);
if (((wsUri.Port >= 1024)
&& (string.Compare(wsUri.Host, "localHost", System.StringComparison.OrdinalIgnoreCase) == 0))) {
return true;
}
return false;
}
}
当尝试从网页拨打电话时,它会超时。当我从另一个WCF服务中使用它时,并使其调用工作正常。
注意: 我使用的asp .net版本是2.0.50727,因为它的客户端代码我无法升级它所以我使用asp .net 2.0.50727的web引用。