1

目前在公司有一个在 Windows azure 中运行的服务,我做了一些需要投入生产的更改,但是当我在 Azure 模拟器中运行该服务时,该服务无法正常工作。

在 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