Требования: Необходимо развернуть REST API на хостинг-сервере.Поэтому перенес код из Консольного приложения C # в ASP.NET, который успешно работал на локальном хосте с некоторыми ошибками
Вот код ниже
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.ServiceModel;
using System.ServiceModel.Web;
using System.Net;
using System.Diagnostics;
namespace WebAPI
{
[ServiceContract]
public interface ICalculator
{
[OperationContract, WebInvoke(UriTemplate = "/sum", Method = "POST", BodyStyle = WebMessageBodyStyle.Wrapped, RequestFormat = WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json)]
double sum(double x, double y);
}
public class Calculator : ICalculator
{
public double sum(double x, double y)
{
return x + y;
}
}
public partial class Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
Debug.WriteLine("Initializing URL");
string baseAddress = "http://localhost:8081/Calculator";
WebServiceHost myHost = new WebServiceHost(typeof(Calculator), new Uri(baseAddress));
try
{
System.Diagnostics.Debug.WriteLine("Starting Service ...");
myHost.Open();
}
catch (Exception ex)
{
//Response.Write(ex);
//System.Diagnostics.Debug.WriteLine("Exception");
//myHost.Close();
//throw new FaultException(ex.Message);
}
}
}
}
Фактический результат:
При создании / отправке запроса POST через клиентское программное обеспечение PostMan в дополнение к той ошибке, которая отображалась в окне «Вывод» в «Отладке», отображалось
* 1016.*
После обновления страницы возникла исключительная ситуация с помощью следующих кодов
myHost.Close();
CommunicationObjectFaultedException was unhandled by user code
An exception of type 'System.ServiceModel.CommunicationObjectFaultedException' occurred in System.ServiceModel.dll but was not handled in user code
Additional information: The communication object, System.ServiceModel.Web.WebServiceHost, cannot be used for communication because it is in the Faulted state.
Exception thrown: 'System.InvalidOperationException' in System.ServiceModel.dll
Exception thrown: 'System.ServiceModel.CommunicationObjectFaultedException' in System.ServiceModel.dll
'iisexpress.exe' (CLR v4.0.30319: /LM/W3SVC/2/ROOT-1-131977214492956233): Loaded 'C:\Windows\assembly\GAC_MSIL\Microsoft.VisualStudio.Debugger.Runtime\14.0.0.0__b03f5f7f11d50a3a\Microsoft.VisualStudio.Debugger.Runtime.dll'. Skipped loading symbols. Module is optimized and the debugger option 'Just My Code' is enabled.
throw new FaultException(ex.Message);
CommunicationObjectFaultedException was unhandled by user code
An exception of type 'System.ServiceModel.CommunicationObjectFaultedException' occurred in System.ServiceModel.dll but was not handled in user code
Additional information: The communication object, System.ServiceModel.Web.WebServiceHost, cannot be used for communication because it is in the Faulted state.
Exception thrown: 'System.InvalidOperationException' in System.ServiceModel.dll
Exception
Exception thrown: 'System.ServiceModel.CommunicationObjectFaultedException' in System.ServiceModel.dll
'iisexpress.exe' (CLR v4.0.30319: /LM/W3SVC/2/ROOT-1-131977154884215275): Loaded 'C:\Windows\assembly\GAC_MSIL\Microsoft.VisualStudio.Debugger.Runtime\14.0.0.0__b03f5f7f11d50a3a\Microsoft.VisualStudio.Debugger.Runtime.dll'. Skipped loading symbols. Module is optimized and the debugger option 'Just My Code' is enabled.
Без Catch Block, нижеуказанное исключение складывалось в окне инструментов диагностики на вкладке Events
Exception: Exception thrown: 'System.InvalidOperationException' in System.ServiceModel.dll ("The ChannelDispatcher at 'http://localhost:8081/Calculator' with contract(s) '"ICalculator"' is unable to open its IChannelListener."). Exception thrown: 'System.InvalidOperationException' in System.ServiceModel.dll ("The ChannelDispatcher at 'http://localhost:8081/Calculator' with contract(s) '"ICalculator"' is unable to open its IChannelListener.")
Как мне нужно перехватить эти исключения
Изменение string baseAddress = "http://somedomain.xy:8081/Calculator";
и загрузка его на сервер в PostMan, который он отображал как
Не удалось получить ответ. Ошибка подключения к http://somedomain.xy:8081/Calculator/sum.
Ожидаемый результат: При совершении звонков через PostMan вычисленные значения должны отображатьсяТак как мне нужно было настроить сервис и запустить его на хостинг-сервере.Поскольку я не могу выяснить ни основную причину, ни решения для всей проблемы, высовывается ли это из части кодирования или проблемы с портом?