我有第一个项目“MyProject.Core”,我有 EDMX:
回购类:
class MyProjectRepo : IMyProjects
{
public int NumberOfUser()
{
return new context().User.Count();
}
public string HelloWorld()
{
return "Hello World!";
}
}
界面:
public interface IMyProjects
{
int NumberOfUser();
string HelloWorld();
}
工厂 :
public static class MyProjectFactory
{
private static IMyProjects _returnedObject;
public static IMyProjects GetObject()
{
lock (typeof(MyProjectFactory))
{
_returnedObject = new MyProjectRepo();
}
return _returnedObject;
}
}
一个测试项目“MyProject.Core.Tests”(测试通过):
[Test]
public void NumberOfUser_Test()
{
var number = MyProjectFactory.GetObject().NumberOfUser();
Assert.AreEqual(1, number);
}
[Test]
public void HelloWorld_Test()
{
var hello = MyProjectFactory.GetObject().HelloWorld();
Assert.AreEqual("Hello World!", hello);
}
我创建了一个“云”项目和一个 WCFServiceWebRole。
在 WCFServiceWebRole 中,我有这个:
public class Service1 : IService1
{
public int NumberOfUser()
{
return MyProjectFactory.GetObject().NumberOfUser();
}
public string Hello()
{
return MyProjectFactory.GetObject().HelloWorld();
}
}
[ServiceContract]
public interface IService1
{
[OperationContract]
int NumberOfUser(string login, string password);
[OperationContract]
string Hello();
}
一个测试 WCF 的项目,方法“Hello”返回正确的值。这是我遇到问题的另一种方法。在 app.config 中,我有这个:
<bindings>
<basicHttpBinding>
<binding name="BasicHttpBinding_IService1" />
</basicHttpBinding>
</bindings>
<client>
<endpoint address="http://myproject.azurewebsites.net/Service1.svc"
binding="basicHttpBinding" bindingConfiguration="BasicHttpBinding_IService1"
contract="myprojectServiceAzure.IService1" name="BasicHttpBinding_IService1" />
</client>
错误 :
System.TimeoutException :请求通道在 00:00:59.7138476 之后等待回复时超时。增加传递给 Request 调用的超时值或增加 Binding 上的 SendTimeout 值。分配给此操作的时间可能是较长超时的一部分。----> System.TimeoutException:对“http://MyProject.azurewebsites.net/Service1.svc”的 HTTP 请求已超过分配的超时 00:00:59.9270000。分配给此操作的时间可能是较长超时的一部分。----> System.Net.WebException : 操作已超时 MyProject.Azure.Tests\Service References\MyProjectServiceAzure\Reference.cs(487, 0) : MyProject.Azure.Tests.PointageServiceAzure.Service1Client.MyMethod(String login ,