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

时间:2012-04-26 11:44:58

标签: c# asp.net wcf

我正在尝试使用WCF服务,因此它具有简单的消息用户名/密码访问权。

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

Metadata publishing for this service is currently disabled.

我的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>

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";
        }
    }
}

myValidator.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");
            }
        }
    }
}

1 个答案:

答案 0 :(得分:1)

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

尝试:

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