如果Azure不使用与我的本地环境相同的web.config,如何使用代理发布MVC应用程序

如果Azure不使用与我的本地环境相同的web.config,如何使用代理发布MVC应用程序,azure,Azure,在我的MVC web应用程序中,一个控制器函数(验证)调用一个服务。请参阅下面的代码并注意MessageHandlerClient是在VisualStudio中生成的服务代理。服务代理调用client.ValidateMessage(formdataasbson[“HLmessage”].ToString())在本地开发环境中运行良好。当我将项目发布到Azure时,验证控制器功能的调用不再起作用。由于怀疑代理存在问题,我更改了Validate()以返回硬编码的结果,重新发布到Azure,并且一切

在我的MVC web应用程序中,一个控制器函数(验证)调用一个服务。请参阅下面的代码并注意MessageHandlerClient是在VisualStudio中生成的服务代理。服务代理调用client.ValidateMessage(formdataasbson[“HLmessage”].ToString())在本地开发环境中运行良好。当我将项目发布到Azure时,验证控制器功能的调用不再起作用。由于怀疑代理存在问题,我更改了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读取迁移的设置。

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

  • Azure网站和Web角色之间的差异
  • 关于何时以及为什么选择Azure网站、Web角色和Azure VM
在Microsoft Azure网站上,您无法完全控制IIS Web服务器,因此某些设置网站特定的设置是可配置的,而其他设置则不是。在Windows Azure网站中,添加到web.config中的大多数特定于计算机和系统的设置都被覆盖,因此这些设置不起作用。此外,您也不能将RDP发送到Azure网站实例


如果您必须使用ASP.NET MVC应用程序,而该应用程序必须需要代理配置,则必须将其部署到

您是否正在发布到Windows Azure网站或Windows Azure云服务?是否已将RDP添加到实例中以确认web.config设置?我正在发布到Azure网站。请注意,此处感兴趣/关注的web服务托管在其他地方……它不是Azure服务。controller MVC web app充当调用web服务的客户端。我原本天真地期望将我的MVC站点发布到Azure将正确地将本地web.config传输到服务器。现在,随着我阅读更多内容,web.config在Azure网站中是不可编辑的。假设我使用RDP并确认我们所期望的—Azure中的web.config不包含服务端点。那么我能做些什么来解决我的问题呢?我试图发布一个带有调用服务的控制器的MVC应用程序,这是从根本上做错了还是不正常?另一种说法是……发布一个本身称为非Azure web服务的web应用程序的标准方式是什么?可能报告了相同的问题:感谢您的洞察力。是的,我承认我最初对站点和角色的困惑。然而,现在我也尝试将同一个项目作为角色发布,而不是作为站点发布……结果相同。显然,在控制器中创建服务代理需要一些配置信息。在独立环境中,创建代理会自动将相关信息存放到web.config和其他位置,但自动生成服务端点信息不会正确发布到Azure。我的根本问题似乎是将web服务代理发布到Azure。请参阅其他帖子。谢谢!