0

在我的 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。

4

1 回答 1

1

根据您上面所写的内容,您似乎对 Web 角色和网站感到困惑。首先,您需要了解这两者之间的区别,以便您可以更好地决定为您的应用程序选择什么。以下是一些有用的链接:

  • 关于 Azure 网站和 Web 角色之间差异的SO 讨论
  • 关于何时以及为什么选择 Azure 网站和 Web 角色以及 Azure VM 的MSDN 文章

Windows Azure 网站,您无法完全控制 IIS Web 服务器,因此某些设置网站特定设置是可配置的,而另一些则不可配置。在 Windows Azure 网站中,添加到 web.config 中的大多数机器和系统特定设置都被覆盖,因此这些设置不起作用。您也不能 RDP 到您的 Azure 网站实例。

如果您必须使用必须需要代理配置的 ASP.NET MVC 应用程序,则必须将其部署到Windows Azure 云服务

于 2012-12-28T16:45:00.113 回答