簡體   English   中英

WCF服務正在開發服務器上運行,但在生產環境中無法正常運行

[英]WCF service is working on dev server but on production it is not woking

我有一個.net客戶端,正在使用WCF服務,並且能夠成功完成該操作。 但是,當我嘗試將其發布到我們的產品中時,就無法使用相同的服務。 以下是我的web.config:

<system.serviceModel>
<behaviors>
  <serviceBehaviors>
    <behavior name="MyBehavior">
      <useRequestHeadersForMetadataAddress></useRequestHeadersForMetadataAddress>
      <serviceMetadata httpGetEnabled="true"/>
      <serviceDebug includeExceptionDetailInFaults="false"/>
      <serviceCredentials>
        <userNameAuthentication userNamePasswordValidationMode="Custom" customUserNamePasswordValidatorType="TestProject.Implementations.AuthenticateUser,TestProject"/>
        <serviceCertificate findValue="localhost" x509FindType="FindBySubjectName" storeLocation="LocalMachine" storeName="My"/>
      </serviceCredentials>
    </behavior>
  </serviceBehaviors>
</behaviors>
<services>
  <service name="TestProject.Implementations.ServiceCustom" behaviorConfiguration="MyBehavior">
    <endpoint address="" binding="wsHttpBinding" bindingConfiguration="SampleServiceBinding" contract="TestProject.Interfaces.IServiceCustom"></endpoint>
    <endpoint contract="IMetadataExchange" binding="mexHttpBinding" address="mex"></endpoint>
  </service>
</services>
<bindings>
  <wsHttpBinding>
    <binding name="SampleServiceBinding">
      <security mode ="Message">
        <message clientCredentialType="UserName"/>
      </security>
    </binding>
  </wsHttpBinding>
</bindings>

我也想啟用我的服務HTTPS。

我收到以下錯誤消息:在http://url.com上沒有端點可以接受該消息。 這通常是由不正確的地址或SOAP操作引起的。 有關更多詳細信息,請參見InnerException(如果存在)。

該錯誤明確表明您嘗試訪問的WCF服務未明確托管,或者您用於連接的地址未指向該服務,請確保通過使用瀏覽器中的地址可以訪問該服務。

如果您能夠訪問該服務,請檢查您的客戶端應用程序web.config並找出該服務的端點詳細信息。 如果端點網址不匹配,則可能會出現此錯誤。

我已修復錯誤,以下是Web配置代碼:

<system.serviceModel>
<behaviors>
  <serviceBehaviors>
    <behavior name="MyBehavior">
<useRequestHeadersForMetadataAddress></useRequestHeadersForMetadataAddress>
      <serviceMetadata httpGetEnabled="true" httpsGetEnabled="true"  />
      <serviceDebug includeExceptionDetailInFaults="false"/>
      <serviceCredentials>
        <userNameAuthentication userNamePasswordValidationMode="Custom" customUserNamePasswordValidatorType="TestProject.Implementations.AuthenticateUser,TestProject"/>
        <serviceCertificate findValue="localhost" x509FindType="FindBySubjectName" storeLocation="LocalMachine" storeName="My"/>
      </serviceCredentials>
    </behavior>
  </serviceBehaviors>
</behaviors>
<services>
  <service name="TestProject.Implementations.Test" behaviorConfiguration="MyBehavior">
    <endpoint address="http://rul" binding="wsHttpBinding" bindingConfiguration="SampleServiceBinding" contract="TestProject.Interfaces.Test"></endpoint>
<endpoint address="https:url" binding="wsHttpBinding" bindingConfiguration="SampleServiceBindingHttps" contract="TestProject.Interfaces.ITest"></endpoint>
    <endpoint contract="IMetadataExchange" binding="mexHttpsBinding" address="mex"></endpoint>
  </service>
</services>
<bindings>
  <wsHttpBinding>
    <binding name="SampleServiceBinding">
      <security mode="Message">
        <message clientCredentialType="UserName"/>
      </security>
    </binding>
<binding name="SampleServiceBindingHttps">
  <security mode="TransportWithMessageCredential">
    <message clientCredentialType="UserName"/>
  </security>
    </binding>
  </wsHttpBinding>
</bindings>

我將安全模式更改為TransportWithMessageCredential模式,並更改了一些配置,例如binding =“ mexHttpsBinding”

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM