我需要通过WebAPI将短信发送到特定的电话号码。因此,我开发了一个Web服务来调用WebAPI并在我的本地PC中托管在IIS 8(Windows 8.1)中。但问题是,当我使用Visual Studio 2015(.NET Framework 4.5.2)运行Web服务并调用Web服务时,它会调用WebAPI并将短信发送到手机,作为回报,WebAPI会发送xml数据。但是,当我在我的PC中托管IIS 8中的Web服务时,Web服务无法调用WebAPI,因此无法发送短信。
Web服务代码和错误消息如下所示。
网络服务
[WebMethod(Description = "Send SMS (Param: =)")]
[ScriptMethod(UseHttpGet = true)]
public string SendSmsParam(string url)
{
try
{
string[] param = url.Split('=');
string userName = param[0];
string password = param[1];
string fromMobileNo = param[2];
string to = param[3];
string message = param[4];
HttpResponseMessage response = new HttpClient().GetAsync("https://abc.xyz.com.bd/ApacheGearWS/SendTextMessage?Username=" + userName + "&Password=" + password + "&From=" + fromMobileNo + "&To=" + to + "&Message=" + message).Result;
return response.Content.ReadAsStringAsync().Result;
}
catch (Exception ex)
{
return ex.ToString();
}
}
网络服务呼叫网址:
http://Localip:port/SendSMS.asmx/SendSmsParam?url=userName=password=fromMobileNo=to=message
异常
“System.AggregateException:一个或多个 发生了错误。 ---> System.Net.Http.HttpRequestException:An 发送请求时发生错误。 ---> System.Net.WebException:无法解析远程名称: 'abc.xyz.com.bd'在 System.Net.HttpWebRequest.EndGetResponse(IAsyncResult asyncResult)
在System.Net.Http.HttpClientHandler.GetResponseCallback(IAsyncResult) ar)---内部异常堆栈跟踪结束--- ---内部结束 异常堆栈跟踪--- at System.Threading.Tasks.Task`1.GetResultCore(布尔 waitCompletionNotification)at SMSWebService.SendSMS.SendSmsParam(String url) ---> (内部异常#0)System.Net.Http.HttpRequestException:发送请求时发生错误。 ---> System.Net.WebException:无法解析远程名称: 'abc.xyz.com.bd'在 System.Net.HttpWebRequest.EndGetResponse(IAsyncResult asyncResult)
在System.Net.Http.HttpClientHandler.GetResponseCallback(IAsyncResult) ar)---内部异常堆栈跟踪的结束---< ---“
在办公室,我的电脑网络是通过DNS和代理配置的。
我的问题是,为什么在IIS 8中托管webservice时无法发送短信,当使用VS 2015运行webserivce时,可以通过webservice和WebAPI发送短信?
还有一件事是,如果我将我的电脑连接到另一个网络(不是办公室网络),假设任何其他私人ISP或任何3G / 4G无线网络,我可以通过调用托管的Web服务发送短信。但正如我已经说过,如果我使用visual studio运行Web服务,我可以通过将我的电脑连接到我的办公室网络来发送短信。问题在哪里以及如何解决?