目前在公司有一个服务在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服务,同时将其升级到我需要使服务工作的新版本。