4

私はネットをさまよっていますが、解決策が見つかりません。
現在、WCF サービスはローカルでは完全に動作しますが、リモート サーバーでは POST 呼び出しに対して 401 (未承認) Web 例外がスローされます。GET は正常に機能します。

Implementation Details :
On the Remote Server-
    IIS : 6.0
    .NET : 4.0
    Calling App : WPF app.

On the Local Server-
    IIS : 7.0
    .NET : 4.0
    Calling App : WPF app.

このサービスには、web.config で WCF レストに指定された匿名アクセスがあります。認証のために、ハードコードされたユーザー名とパスワードを使用してリクエストを認証する AuthManager クラスを実装しました。

呼び出し中に、発信者はネットワーク資格情報を追加します。

ローカルネットワークを呼び出すときのヘッダーは次のとおりです。

Authorization: Basic dG9ueXXXXXXX

server を呼び出している間:

Authorization: Negotiate TlRMTVNTUAABAAAAl4IIXXXXXXX

これは私にとって怪しいものです。

以下は、サービスの Web.config です。

    <?xml version="1.0" encoding="UTF-8"?>
<configuration>
  <connectionStrings>
    <add name="SqlServerConnectionString" connectionString="Data Source=BHUVINT\SQL2008R2;Initial Catalog=CPNS;User ID=sa;Password=orion@123"/>
  </connectionStrings>
  <system.diagnostics>
    <trace>
      <listeners>
        <add name="myListener"
                     type="System.Diagnostics.EventLogTraceListener"
             initializeData="Application" />
      </listeners>
    </trace>
  </system.diagnostics>
  <system.web>
    <compilation debug="true" targetFramework="4.0" />
    <machineKey decryption="AES" decryptionKey="0CA3EFAF0F7A5E7A62681C0BF656EE0ECE31ACEE3E1023BA3FAD20EA5F199DE8" validation="SHA1" validationKey="3E4528C0FFE94A75DF02052B358BD9DE40800DD89DE62168764FF0DCE537184F0535D5D9AD66DEDC97DC1ABFF7FA540B4DFD82E5BB196B95D15FF81F75AD5328" />
  </system.web>

  <system.serviceModel>
    <behaviors>
      <serviceBehaviors>
        <behavior name="Mg">
          <serviceMetadata httpGetEnabled="true" />
          <serviceDebug includeExceptionDetailInFaults="false" />
        </behavior>
        <behavior name="">
          <serviceMetadata httpGetEnabled="true" />
          <serviceDebug includeExceptionDetailInFaults="false" />
        </behavior>
      </serviceBehaviors>
    </behaviors>
    <services>
      <service behaviorConfiguration="Mg" name="ApmWcfServiceWebRole.Push">
        <endpoint binding="webHttpBinding" name="firstBinding" contract="ApmWcfServiceWebRole.IPushService" />
      </service>
      <service behaviorConfiguration="Mg" name="ApmWcfServiceWebRole.WP7Device">
        <endpoint binding="webHttpBinding" name="secondBinding" contract="ApmWcfServiceWebRole.IWP7Service" />
      </service>
      <service behaviorConfiguration="Mg" name="ApmWcfServiceWebRole.iOSDevice">
        <endpoint binding="webHttpBinding" name="thirdBinding" contract="ApmWcfServiceWebRole.IIOSService" />
      </service>
      <service behaviorConfiguration="Mg" name="ApmWcfServiceWebRole.AndroidDevice">
        <endpoint binding="webHttpBinding" name="fourthBinding" contract="ApmWcfServiceWebRole.IAndroidService" />
      </service>
    </services>
    <serviceHostingEnvironment multipleSiteBindingsEnabled="true">
    </serviceHostingEnvironment>

  </system.serviceModel>

  <system.webServer>
    <modules runAllManagedModulesForAllRequests="true" />
  </system.webServer>
</configuration>

EDIT : AuthManager は、チェックが必要な POST が行われている場所でのみ呼び出されます。これらは失敗しているものです。

EDIT 2: AuthManager に Trace を追加しました。資格情報が受信されず、空白の値が取得されます。問題は資格情報の受け渡しにあるようです。

前もって感謝します。

4

1 に答える 1

2

問題は解決されました:

匿名アクセスを有効にしましたが、Windows認証でチェックが有効になっていて、それを削除して機能し始めました解決

于 2012-08-07T12:09:32.023 に答える