1

Web サービスの名前空間に問題があります。私のコンピューターでは正常に動作しますが、チーム ファウンデーション サーバーにアップロードすると、他のユーザーでは動作しません。

Webサービスの私のコード(独自のアプリの「Sentry.SAID」名前空間にあります:

Imports System.Web.Services
Imports System.Web.Services.Protocols
Imports System.ComponentModel
Imports Sentry.SAID.Core
Imports Sentry.SAID.Web

<System.Web.Services.WebService(Namespace:="http://localhost")> _
<System.Web.Services.WebServiceBinding(ConformsTo:=WsiProfiles.BasicProfile1_1)> _
<ToolboxItem(False)> _
Public Class Powerbeatws
    Inherits System.Web.Services.WebService

「Sentry.SAID」名前空間の「Sentry.SAID.Web」アプリの XML ファイル

        <system.serviceModel>
    <bindings>
      <basicHttpBinding>
        <binding name="PowerbeatwsSoap" closeTimeout="00:01:00" openTimeout="00:01:00"
         receiveTimeout="00:10:00" sendTimeout="00:01:00" allowCookies="false"
         bypassProxyOnLocal="false" hostNameComparisonMode="StrongWildcard"
         maxBufferSize="11000000" maxBufferPoolSize="524288"
         maxReceivedMessageSize="11000000"
         messageEncoding="Text" textEncoding="utf-8" transferMode="Buffered"
         useDefaultWebProxy="true">
          <readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="16384"
           maxBytesPerRead="4096" maxNameTableCharCount="16384" />
          <security mode="None">
            <transport clientCredentialType="None" proxyCredentialType="None"
             realm="" />
            <message clientCredentialType="UserName" algorithmSuite="Default" />
          </security>
        </binding>
      </basicHttpBinding>
    </bindings>
    <client>
      <endpoint address="http://localhost:62862/Powerbeatws.asmx" binding="basicHttpBinding"
       bindingConfiguration="PowerbeatwsSoap" contract="PowerbeatSR.PowerbeatwsSoap"
       name="PowerbeatwsSoap" />
    </client>
  </system.serviceModel>

エンドポイント アドレスを localhost/Powerbeatws.asmx に変更すると、エラーがスローされます。ローカルホストを使用して別のコンピューターでこれを動作させる方法はありますか?

現在、他のコンピューターで動作させるには、新しいサービス参照を追加する必要があります。

4

1 に答える 1

0

Web サービスでは、ホストされるサービスとそれを消費するクライアントの 2 つのエンティティが関係していることを覚えておく必要があります。

両方がバインディングで localhost を使用する場合は、同じポート番号を想定するか、TFS からコードをダウンロードする人がエンドポイント バインディングを localhost:62862 から自分のマシンでサービスが実行されているポートに変更する必要があります。

別の方法として、Web サービスでの構成、または 51000 などの既知のポートがすべてのユーザーに使用されるコードを使用して、特定のホスティング アドレスを作成することもできます。それはうまくいくはずです。

チームがローカルホストで同じポート番号を使用していないため、バインディングが機能しないという問題があると思います。ポート 62862 でサービスをホストしているため、マシン上で動作します。

間違っているかもしれませんが。彼らが見ている例外が何であるかはわかりませんが、これは Web サービス コードを共有するときに発生する珍しい問題ではありません。

于 2012-10-12T17:44:30.090 に答える