我有一个Google Maps应用程序,可以在多台开发人员计算机上完美运行,但在部署到面向Internet的Web服务器时无法运行.
开发人员机器都使用访问应用程序
http://localhost
Run Code Online (Sandbox Code Playgroud)
但是,在面向Internet的Web服务器上,应用程序当然可以通过有效域访问
http://<Some Domain>/<application>
Run Code Online (Sandbox Code Playgroud)
在浏览器端调试我看到从浏览器进行的最后一次调用是
https://maps.googleapis.com/maps/api/js/AuthenticationService.Authenticate?1shttp://<the proper domain>/corpsuser/User_Page.html&callback=_xdc_._9p58yx&token=125651
Run Code Online (Sandbox Code Playgroud)
(域名掩盖)
事物挂起的地图应用程序代码似乎是javascript:
map = new google.maps.Map(document.getElementById('map'), mapOptions);
Run Code Online (Sandbox Code Playgroud)
正确定义元素'map'和对象mapOptions(毕竟,app在dev机器上工作正常)
我猜这是许可/关键问题.
我登录了用于启用Google Maps API并生成浏览器密钥的Google帐户,并且还将该域添加/关联到密钥,但这不起作用.注意到有消息表示最多可能需要5分钟才能反映出更改.所以等了一段时间,仍然没有运气.
深入挖掘,我看到一些调用,例如snapToRoads API将Server API Key作为参数.
但是,应用程序挂起的调用是设置映射的第一次调用,并且不接受API密钥.
谷歌文档说我需要在某个地方使用这个标签
<script async defer src="https://maps.googleapis.com/maps/api/js?key=YOUR_API_KEY&callback=initMap" type="text/javascript"></script>
Run Code Online (Sandbox Code Playgroud)
我应该在哪里添加它?我是否必须定义initMap函数?还是应该按原样使用?
任何帮助将不胜感激.
对于实体框架,当我们在实体上有主键时,EF 总是会生成聚集索引。
public class TestEntity
{
[key]
public int NaturalKeyId;
public string Field2;
public string Field3;
}
Run Code Online (Sandbox Code Playgroud)
该NaturalKeyId字段将形成聚集索引。
有没有办法将其保留为(唯一)主键,但不将其作为聚集索引?在我被欺骗之前,我同意在单调递增(代理)字段上拥有聚集索引通常会更好Id。但是在特定情况下,所有更新操作始终使用 NaturalKey (没有为更新传入方便的 Id 。更新始终由只知道 Natural Key 的外部系统触发),我想避免(如果可能)在能够更新/删除实体之前必须首先通过自然键读取实体的开销。
我无法将自然键本身转换为聚集索引,因为键值本质上是随机的,并且我将面临插入的页面拆分。
编辑:NaturalKeyId我已经有了一个可行的解决方案,在运行迁移后,我使用唯一索引而不是聚集索引在数据库中手动重新创建了表。