windows azure wcf在svc中使用带有逻辑的asmx文件的问题

时间:2012-09-07 23:29:02

标签: c# wcf azure asmx svc

目前在公司有一个服务在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);
}

其他信息:

从使用.NET 1.1编写的应用程序调用此Web服务,同时将其升级到我需要使服务工作的新版本。

0 个答案:

没有答案