Я новичок в создании веб-сервисов, и я не совсем понимаю, как получить доступ к моему веб-сервису.Как ссылаться на веб-службу WCF через URI/как отправлять POST в службу WCF через URI?
Что я пытаюсь сделать, так это создать веб-сервис WCF, который считывает данные JSON, которые отправляются на него и десериализует его, а затем что-то делает.
Я создал очень простой сервис WCF с двумя открытыми методами и созданной конечной точкой uri. Хотя, когда я иду на свой uri, я ничего не получаю.
Я должен быть в состоянии перейти к 'http: // localhost: 8000/asd/EchoWithGet? S = Hello, world!' в моем браузере, и этот метод должен вернуть «Вы сказали» + s. Когда я перехожу к этому при запуске службы, я ничего не получаю.
Мой вопрос: как я могу подключить свою программу? Могу ли я также отправить сообщение на мою службу через HTML-форму, а затем открыть IO-ридер?
Заранее благодарим за помощь.
Ниже приведен мой код.
namespace WcfService1
{
[ServiceContract]
public interface IService1
{
[OperationContract]
[WebGet]
string EchoWithGet(string s);
[OperationContract]
[WebInvoke]
string EchoWithPost(string s);
}
public class Service1 : IService1
{
public string EchoWithGet(string s)
{
return "You said " + s;
}
public string EchoWithPost(string s)
{
return "You said " + s;
}
}
class program
{
static void Main(string[] args)
{
WebServiceHost host = new WebServiceHost(typeof(Service1), new Uri("http://localhost:8000/asd/"));
ServiceEndpoint ep = host.AddServiceEndpoint(typeof(IService1), new WebHttpBinding(), "");
/*
ServiceDebugBehavior sdb = host.Description.Behaviors.Find<ServiceDebugBehavior>();
sdb.HttpHelpPageEnabled = false;
*/
host.Open();
Console.WriteLine("Service is running");
Console.WriteLine("Press enter to quit...");
Console.ReadLine();
host.Close();
}
}
Заранее спасибо за помощь
Обновлено, я думаю, что мой вопрос вытекает из моего файла конфигурации. Какую информацию мне нужно добавить в файл конфигурации, чтобы иметь возможность использовать мой веб-сервис через браузер?
<?xml version="1.0"?>
<configuration>
<system.web>
<compilation debug="true" targetFramework="4.0" />
</system.web>
<system.serviceModel>
<behaviors>
<serviceBehaviors>
<behavior>
<serviceMetadata httpGetEnabled="true"/>
<serviceDebug includeExceptionDetailInFaults="false"/>
</behavior>
</serviceBehaviors>
</behaviors>
<serviceHostingEnvironment multipleSiteBindingsEnabled="true" />
</system.serviceModel>
<system.webServer>
<modules runAllManagedModulesForAllRequests="true"/>
</system.webServer>
</configuration>
вы можете попробовать путем удаления ниже конечных точек внутри службы тега <адрес конечной точки = «WS» привязки = «WsHttpBinding» контракт = "WcfService1.IService1 "> –
Parthi
Эй, ребята, спасибо за помощь, но, к сожалению, ни одно из этих решений не устраняет мою проблему. Я правильно создал свой URI и правильно создал конечную точку? Итак, я должен иметь доступ к моей службе локально? Я могу использовать WCF-клиент, и он работает нормально, я просто хочу получить доступ к нему через браузер и, в конечном итоге, через почтовый метод. Правильно ли я создал свою конечную точку? Благодарю. – recneps
Также простите, что я не знаю, что делаю, но вы добавили глагол «Get» к атрибуту webInvoke? Я думал, что webGet поддерживает Get, а webInvoke - для других глаголов, таких как POST, PUT, DELETE и т. Д.? Спасибо. – recneps