无法使用我的网络服务广告连接服务



我创建了一个具有基本身份验证的Web服务(使用本教程(。

有我的web.config:

<system.serviceModel>
    <bindings>
        <basicHttpBinding>
            <binding name="UsernameWithTransportCredentialOnly">
                <security mode="TransportCredentialOnly">
                    <transport clientCredentialType="Basic"/>
                </security>
            </binding>
        </basicHttpBinding>
    </bindings>
    <behaviors>
        <serviceBehaviors>
            <behavior name="RequestUserNameConfig">
                <serviceMetadata httpGetEnabled="true" httpsGetEnabled="true"/>
                <serviceDebug includeExceptionDetailInFaults="true"/>
                <serviceCredentials>
                    <userNameAuthentication
                        userNamePasswordValidationMode="Custom"
                        customUserNamePasswordValidatorType="MyInterface.CredentialsChecker,App_Code.CredentialsChecker"/>
                </serviceCredentials>
            </behavior>
        </serviceBehaviors>
    </behaviors>
    <services>
        <service behaviorConfiguration="RequestUserNameConfig" name="MyInterface.MyService">
            <endpoint
                address="https://localhost:47336/MyService.svc"
                binding="basicHttpBinding"
                bindingConfiguration="UsernameWithTransportCredentialOnly"
                name="BasicEndpoint"
                contract="MyInterface.IMyService">
            </endpoint>
        </service>
    </services>
    <serviceHostingEnvironment aspNetCompatibilityEnabled="true"
        multipleSiteBindingsEnabled="false" />
</system.serviceModel>

文件夹App_Code包含此代码的文件CredentialsChecker.cs

namespace MyInterface
{
    public class CredentialsChecker : UserNamePasswordValidator
    {
        public override void Validate(string userName, string password)
        {
            /* ... Some Code ... */
        }
    }
}

我创建了一个我想用于测试我的Web服务的项目。但是,当我想添加服务作为服务参考时,我会收到错误:

提供的URI方案" HTTPS"无效;预期的" http"。

我是否在网络服务中错过了一些东西?

您的UsernameWithTransportCredentialOnly是类型basicHttpBinding。因此,您需要指定支持绑定的端点。要么将您的地址更改为HTTP,要么将绑定更改为WSHTTP

          <endpoint
                address="http://localhost:47336/MyService.svc"
                binding="basicHttpBinding"
                bindingConfiguration="UsernameWithTransportCredentialOnly"
                name="BasicEndpoint"
                contract="MyInterface.IMyService">
            </endpoint>

相关内容

  • 没有找到相关文章

最新更新