1

現在、会社には Windows azure で実行されているサービスがあります。本番環境に移行する必要があるいくつかの変更を行いましたが、これを Azure Emulator で実行するとサービスが正しく動作しません。

Visual Studio ソリューションでは、次のようになります。

Service1.svc.cs //<-- 実装されたすべてのメソッドを持っています
Service1.svc
Service1.asmx //<-- Service1.svc.cs のロジックを使用します

私の問題は、windows azure を使用せずにこれを実行すると完全に動作しますが、windows azure エミュレーターからこれを実行すると正しく動作せず、結果が別のポートを使用して別のウィンドウで開かれることです。

たとえば、次のアドレスでメソッドを呼び出しているとします。

http://127.0.0.1:81/Service1.asmx

メソッドを実行すると、次のようなものが返されます。

http://127.0.0.1:82/Service1.asmx/CurrentVersion

以前のバージョンでは WCF とロード バランサーに問題があったと読みましたが、この場合は .NET 4.0 と Azure 1.7 を使用しています。

web.config には、バランサーの問題を解決すると他のフォーラムが言っている構成もいくつか追加しました。

<behaviors>
      <serviceBehaviors>
        <behavior name="DefaultServiceBehavior">
          <serviceMetadata httpGetEnabled="true" />
          <serviceDebug includeExceptionDetailInFaults="true" />
          <!-- Test from microsoft -->
          <useRequestHeadersForMetadataAddress>
            <defaultPorts>
              <add scheme="http" port="81" />
              <add scheme="https" port="444" />
            </defaultPorts>
          </useRequestHeadersForMetadataAddress>
        </behavior>
      </serviceBehaviors>
    </behaviors>

問題にどのように取り組むべきか誰かが知っていますか?

以下は私のコードの例です:

 public class Service1 : IService1
 {
     public string CurrentVersion(string accountcode)
     {
         SiteServiceConfiguration sitecfg = GetSiteServiceConfiguration(accountcode);
         return sitecfg.CurrentVersion;
     }
 }

[ServiceContract]
[WebService(Name = "Service1")]
[WebServiceBinding(Name = "ServiceSoap1", ConformsTo = WsiProfiles.BasicProfile1_1, EmitConformanceClaims = false)]
public interface IService1
{
    [OperationContract]
    [WebMethod]
    string CurrentVersion(string accountcode);
}

他の情報:

この Web サービスは、.NET 1.1 で記述されたアプリケーションから呼び出されますが、サービスを動作させるために必要な新しいバージョンにアップグレードされます。

4

0 に答える 0