Joe*_*ell 6 azure ravendb asp.net-mvc-3 azure-web-sites
我正在使用Azure上的新网站功能,并尝试在嵌入模式下使用RavenDB运行MVC网站.一切都在本地工作正常但在azure中运行已部署的站点我收到此错误:
System.Net.NetworkInformation.NetworkInformationException:拒绝访问
当我在global.asax中创建数据库实例时会发生这种情况:
Store = EmbeddableDocumentStore { ConnectionStringName = "RavenDb" };
Run Code Online (Sandbox Code Playgroud)
我的连接字符串是:
<add name="RavenDb" connectionString="DataDir=~\App_Data\Raven" />
Run Code Online (Sandbox Code Playgroud)
谢谢!
cor*_*ler 12
当没有为RavenDb指定端口时,它会出去并尝试找到它自己的端口,它通过调用IPGlobalProperties.GetActiveTcpListeners()来实现.
var activeTcpListeners = IPGlobalProperties
.GetIPGlobalProperties()
.GetActiveTcpListeners();
Run Code Online (Sandbox Code Playgroud)
调用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>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1416 次 |
| 最近记录: |