gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 09:41:26 24 4
gpt4 key购买 nike

我正在尝试 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com