我使用wsHttpBinding创建了一个服务,但每次下载该服务时,它都会在客户端的配置中创建basichttpbinding。有什么想法吗? thansk
<system.serviceModel>
<serviceHostingEnvironment/>
<bindings>
<wsHttpBinding>
<binding name="WSHttpBinding" sendTimeout="00:10:00" receiveTimeout="00:59:00" bypassProxyOnLocal="false"
transactionFlow="false" hostNameComparisonMode="StrongWildcard"
maxBufferPoolSize="50000000" maxReceivedMessageSize="50000000"
messageEncoding="Mtom" textEncoding="utf-8" useDefaultWebProxy="true"
allowCookies="false">
<readerQuotas maxDepth="32" maxStringContentLength="50000000"
maxArrayLength="50000000" maxBytesPerRead="4096" maxNameTableCharCount="2147483647" />
<reliableSession inactivityTimeout="00:59:00" />
<security mode="Message">
<!--<transport clientCredentialType="Windows" proxyCredentialType="None"
realm="" />-->
<message clientCredentialType="UserName" negotiateServiceCredential="true"
algorithmSuite="Default" establishSecurityContext="true" />
</security>
</binding>
</wsHttpBinding>
</bindings>
<services>
<service behaviorConfiguration="AdviserPayServiceBehaviour" name="AdviserPay.Services.FirstService.FirstService">
<endpoint binding="wsHttpBinding" bindingConfiguration="WSHttpBinding" contract="AdviserPay.Services.FirstService.IFirstService" />
<endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />
</service>
</services>
<behaviors>
<serviceBehaviors>
<behavior name="AdviserPayServiceBehaviour">
<serviceMetadata httpGetEnabled="true" />
<serviceDebug includeExceptionDetailInFaults="false" />
<serviceAuthorization principalPermissionMode="None" impersonateCallerForAllOperations="false" />
<serviceCredentials>
<userNameAuthentication userNamePasswordValidationMode="Custom"
membershipProviderName="AdviserPayCustomMembershipProvider" />
</serviceCredentials>
<serviceSecurityAudit auditLogLocation="Application" suppressAuditFailure="false"
serviceAuthorizationAuditLevel="None" messageAuthenticationAuditLevel="SuccessOrFailure" />
<serviceThrottling maxConcurrentCalls="100" maxConcurrentSessions="100" />
</behavior>
<behavior name="">
<serviceMetadata httpGetEnabled="true" />
<serviceDebug includeExceptionDetailInFaults="false" />
</behavior>
</serviceBehaviors>
</behaviors>
</system.serviceModel>
答案 0 :(得分:5)
.svc标记文件中的服务名称可能与web.config中指定的名称不匹配。
当WCF启动您的服务时,框架会检查.svc文件中的服务名称,然后在web.config中查找与该名称匹配的配置。如果未找到,则使用默认配置 - BasicHttpBinding。
解决问题:
答案 1 :(得分:1)
我有同样的问题,但我的服务有效。在我的例子中,我暴露了两个绑定basichttp和wshttp。我有一个在.net 3.5上新建的测试网站。当它获得服务引用时,它会关闭两个绑定,我会注释掉基本端点。 一切正常。
然而, 真正的消费者是一个在.net 2.0中创建的网站,并且已经升级到4.0。所以我做了和以前一样的过程,注释掉了basicHttp端点。但是,当调用服务时我遇到异常并且期望发送和接收http,服务器在此测试中拒绝连接。
这必须是网站升级到4.0并且最初不是在3.5或更高版本中创建的。我可以说这是一种升级情况,因为通常存在的属性文件夹在真实服务使用者站点上不存在。
必须有一个标志/设置才能打开,但我不确定是什么。