在Azure Web App中发布MVC应用程序

时间:2015-06-10 23:46:37

标签: sql sql-server asp.net-mvc azure

这是我的Azure配置:

  1. 我有一个带有几个子网和网关的虚拟网络 配置为允许指向站点。
  2. 安装了一台安装了SQL Server(2014)的虚拟机。那里 那里有一些数据库。 SQL Server设置为允许 SQL Server和Windows身份验证模式。 此虚拟机位于虚拟网络
  3. 我有一个空的Azure Web App
  4. 我将主要的MVC WebApp部署到空的Azure Web App并且看起来不错,除非它试图从数据库中检索信息。

    是连接字符串错误吗?或者还有别的东西......

    我的连接字符串如下所示:

    <add name="MyEntities" connectionString="metadata=res://*/Data.MyModel.csdl|                                                                                                                    res://*/Data.MyModel.ssdl|                                                              res://*/Data.MyModel.msl;provider=System.Data.SqlClient;
                                                                                                                        provider connection string=&quot;
                                                                                                                            data source=tcp:10.0.1.4;
                                                                                                                            initial catalog=MyDataBase;
                                                                                                                            persist security info=False;
                                                                                                                            user id=MySystemAdmin;
                                                                                                                            password=SystemAdminPassword;
                                                                                                                            multipleactiveresultsets=True;
                                                                                                                            App=EntityFramework&quot;" 
                                                                    providerName="System.Data.EntityClient" />
    

    以下是天蓝网络应用程序抛出的错误...

    enter image description here

    所以它似乎与我提供连接字符串或端点/防火墙配置的方式有关。

3 个答案:

答案 0 :(得分:3)

针对Entity Framework设计器文件(https://msdn.microsoft.com/en-us/data/jj556606.aspx#Connection

的此连接字符串检查连接字符串

从快速浏览一下,我发现了两个可能的错误:

  1. 在提供者= System.Data.SqlClient之后添加了分号缺失(我在页面上提供了链接的示例,但没有提供)
  2. 您指定连接的IP地址是本地IP地址(10.0.0.1),应该是Azure中数据库的IP / DNS名称。
  3. 不确定这是否是问题,或者StackOverflow是否只是破坏了你的标记。另外,你谈论了很多网关,所以我会检查以确保你可以在你的系统之间进行交谈。最后发布错误消息并捕获有关实际发生情况的异常将有助于诊断错误,因为此时所有猜测都是如此。

    希望有所帮助。

答案 1 :(得分:1)

上面提到的那些人加上:

  1. 如果您想使用本地IP地址,Web App需要与VM的VNET混合连接,否则您必须使用PIP。
  2. 检查VM上的防火墙是否打开了正确的端口。这必须在VM防火墙和端点上。此外,如果VM上有任何ACL,您还必须检查这些ACL。

答案 2 :(得分:0)

其他答案给了我指导,以找出解决方案。

我将尝试描述我遵循的步骤:

  1. 使用新的azure门户网站(portal.azure.com目前正在预览中)I 在Azure Web App和Virtual之间建立了连接 网络:
    • 主页&gt;浏览&gt;单击Azure Web App名称
    • 在Azure Web App刀片中,单击“网络磁贴”
    • 在虚拟网络刀片中,单击数据库所在的虚拟网络(重要的是要提到虚拟网络应该具有先前配置的网关
  2. 我的目的是为VM提供一定程度的安全性 数据库放在虚拟网络中,所以我没有 考虑开放港口。事实证明它是必要的,因此,在VM中:

    • 我使用Sql Server配置管理器启用了SQL Server的TCP / IP协议(如何?here

    • 然后我创建了一个新的入站规则,打开了1433端口,但仅用于私人连接(非常好)。

    • 没有必要在VM中为此端口创建端点(非常满意)。
  3. 最后,我使用连接字符串将该应用程序发布到Azure Web App,如问题所示(使用内部数据库IP)
  4. 最后的触摸:在新的Azure门户中&gt; Azure Web App&gt;设置,我能够输入连接字符串。在门户中创建的设置不会被覆盖;所以现在我确定这个Azure Web App将始终使用正确的连接字符串。

    最后注意事项:理论上(尚未测试)只要VM未停止(取消分配),内部IP就不会改变。