Как создать Get и Post методы для страницы входа в сервис wcf в c # - PullRequest
0 голосов
/ 15 июня 2019

Я создаю службу WCF в ASP.NET, и мне нужно реализовать методы Get и Post для простой страницы входа

Это для запуска приложения на локальном хосте. У меня есть SQL-сервер для базы данных.

C #: это код, который я кодировал:

 [ServiceContract]
       public interface ILogin
        {
            [OperationContract(Name = "PostUserDetails")]
            [WebInvoke(Method = "POST",UriTemplate = "")]

            string UserName(Stream data);
            string UserPassword(Stream data);

            [OperationContract(Name = "GetUserDetails")]
            [WebGet(UriTemplate = "GetUserDetails/inputStr/{name}")]
            string UserName(string name);
            string UserPassword(string name);
        }

Это код, который я кодировал:

public class Login :ILogin
    {
        public string UserName(Stream data)
        {
            StreamReader streamReader = new StreamReader(data);
            string xmlString = streamReader.ReadToEnd();
            string returnValue = xmlString;

            return returnValue;
        }

        public string UserPassword(Stream data)
        {
            StreamReader streamReader = new StreamReader(data);
            string xmlString = streamReader.ReadToEnd();
            string returnValue = xmlString;

            return returnValue;
        }

        public string UserName(string strUserName)
        {
            StringBuilder strReturnValue = new StringBuilder();
            // return username prefixed as shown below
            strReturnValue.Append(string.Format("You have entered userName as {0}", strUserName));
            return strReturnValue.ToString();
        }

        public string UserPassword(string strUserName)
        {
            StringBuilder strReturnValue = new StringBuilder();
            // return username prefixed as shown below
            strReturnValue.Append(string.Format("You have entered userName as {0}", strUserName));
            return strReturnValue.ToString();
        }
    }

Я также настроил Интернет.Конфигурация как:

<system.serviceModel>
    <services>
      <service name="MyWCFService.Login" behaviourConfiguration ="loginbehaviour" >
        <endpoint name="webHttpBinding" address="" binding="webHttpBinding" contract="MyWCFService.ILogin" behaviorConfiguration="webHttp">
        </endpoint>
        <endpoint name ="mexHttpBinding" address="mex" binding="mexHttpBinding" contract="IMetadataExchange"></endpoint>
      </service>
    </services>
    <behaviors>
      <serviceBehaviors>
        <behavior name="MyWCFServiceBehaviour">
          <serviceMetadata httpGetEnabled="false"></serviceMetadata>
          <serviceDebug includeExceptionDetailInFaults="false"/>

          <serviceMetadata httpGetEnabled="true" httpsGetEnabled="true"/>
          <serviceDebug includeExceptionDetailInFaults="false"/>
        </behavior>
      </serviceBehaviors>
      <endpointBehaviors>
        <behavior name="webHttp"></behavior>
        <webHttp/>
      </endpointBehaviors>
    </behaviors>
    <protocolMapping>
        <add binding="basicHttpsBinding" scheme="https" />
    </protocolMapping>    
    <serviceHostingEnvironment aspNetCompatibilityEnabled="true" multipleSiteBindingsEnabled="true" />
  </system.serviceModel>

Я получаю ошибку HTTP 404.7 - Ошибка не найдена

1 Ответ

0 голосов
/ 16 июня 2019

Прежде всего, вы не можете использовать Stream в качестве входных данных. потому что поток con не сериализован. тогда вам не нужно создавать два отдельных метода. создайте такой логин и используйте * как ваш метод. как то так:

    [OperationContract(Name = "PostUserDetails")]
    [WebInvoke(Method = "*",UriTemplate = "")]

    string UserName(Data data);
    string UserPassword(Data data);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...