RavenDb在Azure网站 - 访问被拒绝(RavenDb on Azure Websites

2019-07-30 11:04发布

我在玩弄新的网站功能,在Azure上,并试图获得在嵌入式模式RavenDB运行MVC的网站。 一切工作正常,但本地运行在Azure中部署的网站,我得到这个错误:

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

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

Store = EmbeddableDocumentStore { ConnectionStringName = "RavenDb" };

我的连接字符串是:

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

谢谢!

Answer 1:

如果不是RavenDb指定端口,将走出去,试图找到它自己,它通过调用IPGlobalProperties.GetActiveTcpListeners做到这一点()。

RavenDb | PortUtil.cs

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

调用GetActiveTcpListeners()实习生调用Win32函数GetTcpTable(),它试图列举所有可能的端口组合的主机上。 由于显而易见的原因,它不会是一个很好的方案,让乡亲到Windows Azure网站中做端口扫描。 这意味着GetTcpTable操作失败,当事情发展的世界失败,我们抛出一个异常。

在这种特殊情况下例外是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> 


文章来源: RavenDb on Azure Websites - Access Denied