asp.net-mvc-3 - Azure 网站上的 RavenDb - 访问被拒绝

标签 asp.net-mvc-3 azure ravendb azure-web-app-service

我正在尝试 Azure 上的新网站功能,并尝试让 MVC 站点在嵌入模式下与 RavenDB 一起运行。本地一切正常,但在 azure 中运行部署的站点时出现此错误:

System.Net.NetworkInformation.NetworkInformationException:访问被拒绝

当我在 global.asax 中创建数据库实例时会发生这种情况:

Store = EmbeddableDocumentStore { ConnectionStringName = "RavenDb" };

我的连接字符串是:

<add name="RavenDb" connectionString="DataDir=~\App_Data\Raven" />

谢谢!

最佳答案

当没有为 RavenDb 指定端口时,它会出去并尝试找到自己的端口,它通过调用 IPGlobalProperties.GetActiveTcpListeners() 来实现此目的。

RavenDb | PortUtil.cs

var activeTcpListeners = IPGlobalProperties
                         .GetIPGlobalProperties()
                         .GetActiveTcpListeners();

调用GetActiveTcpListeners() intern 调用 Win32 函数 GetTcpTable(),该函数尝试枚举主机上所有可能的端口组合。出于显而易见的原因,允许人们在 Windows Azure 网站内进行端口扫描并不是一个好的方案。这意味着 GetTcpTable 操作失败,当开发领域出现故障时,我们会抛出异常。

在这种特殊情况下,异常(exception)是 NetworkInformationException这是为了忽略对 GetTcpTable 的调用而引发的安全权限。这就是它导致“拒绝访问”消息的原因。

tl;博士

将默认端口添加到您的 web.config appsettings 部分:

 <appSettings> 
    <add key="Raven/Port" value="*"/> <!-- Add real tcp port # -->
    <add key="Raven/DataDir" value="~\Data"/> 
    <add key="Raven/AnonymousAccess" value="Get" /> 
 </appSettings> 

关于asp.net-mvc-3 - Azure 网站上的 RavenDb - 访问被拒绝,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11529159/

相关文章:

asp.net-mvc - ASP.NET MVC : Empty ActionLinks appearing

css - 如何使用 ASP.NET MVC 设计我的 CSS?

azure - 无法在 Windows Phone 8 应用程序中安装 Windows Azure SDK

azure - 在 Mongodb API 查询中使用投影时对 Cosmos DB RU 有何影响

linq - RavenDb:检查 List<string> 是否包含另一个 List<string> 中的任何内容

c# - 无法上传图像(HttpPostedFileBase 为 Null)

ajax - 在使用 MVC 3 和 jQuery 进行 AJAX 和动态创建之后,元素未通过不显眼的验证进行验证

Azure ARM 在复制 block 中部署具有多个访问策略的 keyVault

通过 HTTPS 的 RavenDB 连接

c# - RavenDB 中的 'heavy' 聚合函数是否可取?