Я создаю службу WCF для хранения некоторых данных в приложении Xamarin.Forms, которое я делаю. Я развернул эту службу в службе приложений Azure. Я получаю следующую ошибку при переходе по URL-адресу:
Server Error in '/' Application.
The resource cannot be found.
Description: HTTP 404. The resource you are looking for (or one of its dependencies) could have been removed, had its name changed, or is temporarily unavailable. Please review the following URL and make sure that it is spelled correctly.
Requested URL: /EventWCFService.svc
Код службы WCF:
public class EventWCFService : IEventWCFService
{
private static IEventService _eventService = new EventService(new EventRepository());
public void AddEvent(Event @event)
{
try
{
if (String.IsNullOrWhiteSpace(@event.EventTitle) || @event == null)
{
throw new FaultException("Event name is required");
}
_eventService.AddEvent(@event);
}
catch (Exception exception)
{
throw new FaultException($"Whoops... Something has gone wrong {exception.Message}");
}
}
public IList<Event> GetAllEvents()
{
return _eventService.GetAllEvents();
}
}
Мой проект WCF также содержит репозитории и сервисы:
IEventWCFService:
[ServiceContract]
public interface IEventWCFService
{
[OperationContract]
IList<Event> GetAllEvents();
[OperationContract]
void AddEvent(Event @event);
}
Веб.Конфигурация:
<?xml version = "1.0"?>
<configuration>
<appSettings>
<add key = "aspnet:UseTaskFriendlySynchronizationContext" value = "true" />
</appSettings>
<system.web>
<compilation debug = "true" targetFramework = "4.8" />
<httpRuntime targetFramework = "4.8"/>
</system.web>
<system.serviceModel>
<behaviors>
<serviceBehaviors>
<behavior>
<!-- To avoid disclosing metadata information, set the values below to false before deployment -->
<serviceMetadata httpGetEnabled = "true" httpsGetEnabled = "true"/>
<!-- To receive exception details in faults for debugging purposes, set the value below to true. Set to false before deployment to avoid disclosing exception information -->
<serviceDebug includeExceptionDetailInFaults = "false"/>
</behavior>
</serviceBehaviors>
</behaviors>
<protocolMapping>
<add binding = "basicHttpsBinding" scheme = "https" />
</protocolMapping>
<serviceHostingEnvironment aspNetCompatibilityEnabled = "true" multipleSiteBindingsEnabled = "true" />
</system.serviceModel>
<system.webServer>
<modules runAllManagedModulesForAllRequests = "true"/>
<!--
To browse web app root directory during debugging, set the value below to true.
Set to false before deployment to avoid disclosing web app folder information.
-->
<directoryBrowse enabled = "true"/>
</system.webServer>
</configuration>
Что я пробовал:
Прежде всего я попытался зайти в свойства и создать виртуальный каталог - это не сработало и не решило проблему.
Я попытался установить пустую страницу «Конкретная страница» - это все равно не решило проблему.
Я попытался создать новую службу приложений, и у меня все еще есть проблема.
Я новичок в WCF, поэтому извиняюсь, если это может быть ошибка новичка. Я прохожу курс Pluralsight и довольно хорошо справлялся до части развертывания Azure.
извините за это @Jason ... я, должно быть, запутался
Я решил эту проблему, создав и развернув новую службу приложений Azure непосредственно на портале Azure, а не в самой Visual Studio. Затем я развернул службу WCF непосредственно из существующей службы приложений, которую я только что создал.
это чисто проблема WCF, она не имеет ничего общего с Xamarin