使用 WCF 服务的消息模式密码

本文关键字:模式 密码 消息 WCF 服务 使用 | 更新日期: 2023-09-27 18:32:23

我正在尝试使WCF服务正常工作,以便它具有简单的消息用户名/密码访问权限。

每当我尝试使用当前设置访问服务时,它都会说:

Metadata publishing for this service is currently disabled.

我的网络配置(My Web.config

  <system.serviceModel>
    <bindings>
      <wsHttpBinding>
        <binding name="Binding1">
          <!-- UsernameToken over Transport Security -->
          <security mode="Message" >
            <message clientCredentialType="UserName"/>
          </security>
        </binding>
      </wsHttpBinding>
    </bindings>
    <services>
      <service name="MyService" behaviorConfiguration="ServiceBehavior">
        <endpoint address="http://localhost/Service.svc" binding="wsHttpBinding" contract="IService" bindingConfiguration="Binding1">
          <identity>
            <dns value="localhost"/>
          </identity>
        </endpoint>
        <endpoint address="mex" binding="mexHttpsBinding" contract="IMetadataExchange"/>
      </service>
    </services>
    <behaviors>
      <serviceBehaviors>
        <behavior  name="ServiceBehavior">
          <!-- To avoid disclosing metadata information, set the value below to false and remove the metadata endpoint above before deployment -->
          <serviceMetadata  httpGetEnabled="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"/>
          <serviceCredentials>
            <!-- Use our own custom validation -->
            <userNameAuthentication userNamePasswordValidationMode="Custom"
                                                customUserNamePasswordValidatorType="WebApplication5.MyValidator, WebApplication5"/>
          </serviceCredentials>
        </behavior>
      </serviceBehaviors>
    </behaviors>
  </system.serviceModel>
</configuration>

my MyService.svc:

namespace WebApplication5
{
    // NOTE: You can use the "Rename" command on the "Refactor" menu to change the    
class name "MyService" in code, svc and config file together.
    public class MyService : IMyService
    {
        public string DoWork()
        {
            return "You Got It";
        }
    }
}

我的我的验证器.cs:

namespace WebApplication5
{
    class MyValidator : UserNamePasswordValidator
    {
        public override void Validate(string userName, string password)
        {
            if ((userName == "shiv123") && (password == "pass123"))
            {
            }
            else
            {
                throw new FaultException("Invalid credentials");
            }
        }
    }
}

使用 WCF 服务的消息模式密码

XML 中的服务应包含命名空间。

尝试使用 :

<service name="WebApplication5.MyService" ...