在我的 MVC Web 应用程序中,一个控制器功能(验证)调用服务。请参阅下面的代码并注意 MessageHandlerClient 是在 Visual Studio 中生成的服务代理。服务代理调用 client.ValidateMessage(formdataasbson["HLmessage"].ToString()) 在我的本地开发环境中工作正常。当我将项目发布到 Azure 时,对 Validate 控制器函数的调用不再起作用。怀疑代理有问题,我更改了 Validate() 以返回硬编码结果,重新发布到 Azure,一切正常 - 确认 Azure 中的 Web 服务代理行为存在问题。
[HttpPost]
public ActionResult Validate(String serializedformdata)
{
try
{
BsonDocument formdataasbson = this.serializer.JSONFormtoBSON(serializedformdata);
MessageHandlerClient client = new MessageHandlerClient();
this.jsonresponse.ReturnValue = "true";
StandaloneValidator.My_ServiceReference.Error[] results = client.ValidateMessage(formdataasbson["HLmessage"].ToString());
this.jsonresponse.ReturnMessage = results.ToJson();
return Json(this.jsonresponse);
}
catch (Exception ex)
{
this.jsonresponse.ReturnValue = "false";
this.jsonresponse.ReturnMessage = ex.Message;
return Json(this.jsonresponse);
}
}
更重要的是,我在本地 web.config 文件中看到了 Web 服务代理的详细信息,如下所示(IP 故意隐藏):
我已经阅读了有关 Azure 中 web.config 的各种帖子以及它不可写的事实,所以我怀疑我的本地.....代理信息从未在 Azure 中发布。如果确实 web.config 没有从本地发布到 Azure,那么我明白为什么我的代理不起作用。问题是......我该怎么做才能解决??!
编辑:我看到各种帖子讨论将某些设置从 web.config 迁移到 Azure 的 csfg 文件 - 也许是一个可行的解决方案?鉴于我没有编写手动读取这些设置的代码(我只是创建了从 URL 到服务的服务代理),我担心自动生成的代码或服务的任何“幕后”行为,不知道如何从csfg。