小编Chr*_*rie的帖子

启用CORS但是在POST JSON时,预检的响应具有无效的HTTP状态代码404

我已经彻底搜索过但在我的特定情况下找不到解决这个问题的方法.

使用Fiddler(POST)的跨域服务调用正确执行并接收数据.但是,通过浏览器(Chrome),我收到消息'预检有无效的HTTP状态代码404'

我有一个Web API应用程序并安装了CORS并确保web.config文件中存在以下内容:

<system.webServer>
    <handlers>
      <remove name="ExtensionlessUrlHandler-Integrated-4.0" />
      <remove name="OPTIONSVerbHandler" />
      <remove name="TRACEVerbHandler" />
      <add name="ExtensionlessUrlHandler-Integrated-4.0" path="*." verb="*" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0" />
    </handlers>
    <httpProtocol>
      <customHeaders>
        <add name="Access-Control-Allow-Origin" value="*" />
        <add name="Access-Control-Allow-Headers" value="Content-Type" />
        <add name="Access-Control-Allow-Methods" value="GET, POST, PUT, DELETE, OPTIONS" />
      </customHeaders>
    </httpProtocol>
</system.webServer>
Run Code Online (Sandbox Code Playgroud)

这是Ajax调用:

var secretKey = 'difusod7899sdfiertwe08wepifdfsodifyosey',
    url = 'http://api.intrinsic.co.uk/api/v1/PTS/ActiveDrivers?api_key=098werolllfWnCbPGAuIXVOJidDHRfYcgxImMlxTXopuekXrSOqOWzEAIdeNTWGPQPpyHxgVGsFysGFKPzq';

  jQuery.ajax ({
      url: url,
      type: "POST",
      data: JSON.stringify({ secretKey: secretKey}),
      dataType: "json",
      contentType: "application/json; charset=utf-8",
      success: function(data){
          var content = "<table class=\"container\"><thead><tr><th>Driver Number</th><th>Timestamp</th><th>VRN</th><th>Latitude</th><th>Longitude</th><th>Track Link</th></tr></thead><tbody>";
          $.each(data.ActiveDrivers.DriverLocationStatus, function (index, element) …
Run Code Online (Sandbox Code Playgroud)

ajax json cors asp.net-web-api

22
推荐指数
3
解决办法
7万
查看次数

RhoMobile Suite vs. Titanium v​​s. Xamarin vs. PhoneGap vs. Telerik Platform vs. Codename One

我和许多其他人一样,希望进军移动应用程序开发.我熟悉HTML5,CSS3,JavaScript,PHP,Ruby,.NET,但不熟悉Java或Objective-C.老实说,我不太可能成为一名移动开发人员大师,而我将开发的应用程序不太可能将Hybrid的极限推到极限,以至于无论如何我都应该去原生.所以我面临的挑战是获得足够的知识,让自己与主流的混合开发平台保持一致 - 知道我根据自己的要求做出了正确的决定.

我一直在阅读有关SO的类似帖子,并研究当前流行的Hybrid Mobile应用程序开发'解决方案',包括:

Xamarin Titanium Rhomobile PhoneGap Telerik平台

我得出的结论是,与之相关的决定并非如此简单.事实上,我开始时并没有比做出决定更接近决定.因此,我转向社区根据我的具体标准推荐哪些选项(我认为这反映了大多数自雇的开发人员在逐个项目的基础上工作,而不是一个能够为许可提供资金的大型企业开发团队成本等)

我将构建的应用程序将需要Android和iPhone版本,并且应该能够访问基本的核心电话功能,包括:摄像头,加速度计,地理位置,警报,本地存储,G传感器等,但不多.

所以,这篇文章不是主观的"哪一个最好?",而是根据以下要求寻找建议:

  1. 免费(优先),但至少对小男人负担得起:1a.可负担的每月订阅(如果必须的话)1b.在分发我的应用程序时没有隐藏的许可证费用 - 这是一个巨大的问题.

  2. 开发平台应该安装在Windows和Mac上(所以我可以自己为平台构建)2a.或者,任何集成的在线构建服务都应该是可承受的

  3. 环境应该很容易安装和配置(有这样的解决方案吗?几乎所有我尝试过的东西在查找参考文件,版本,启动模拟器等时都会遇到某种问题)

作为一个.NET MVC开发人员,Xamarin似乎是显而易见的选择,但是入门者无法调用第三方库 - 我想我需要这个 - 而每个平台每年只需299美元的"Indie",我不确定它会不会提供所需的所有功能.每个平台每年1899美元的企业版远远超出预算.

Rhomobile套件及其MVC Ruby方法似乎非常适合我,但文档需要注意(过时)并且似乎在许可方面存在大量的怀疑.我找不到明确的答案,他们没有回应简单的请求.我发现:"使用RhoElements确实需要许可证密钥,只使用非企业功能(即Rhodes应用程序)只需从build.yml中删除app_type:rhoelements." - 当然很可能我需要RhoElements!看看应用程序许可(在docs.rhomobile.com网站上),似乎你可以从摩托罗拉解决方案(或其他一些经销商)获得它们,但通常我找不到价格.这让我很担心 - 当我分发到应用程序商店时,我可以预见我会收到10,000美元的费用.

Titanium在许可方面也存在模糊之处.一些人声称他们被英国经销商追讨5000美元的许可证,其他人认为这是完全错误的,并且没有许可证费用.再一次,不知道......

相比之下,PhoneGap似乎确实勾选了方框,我没有看到对许可的担忧,但与其他解决方案相比,它需要更多的手动流程和未完成的结果 - 尽管这可能更多地与应用程序有关我已经在示例中看到而不是平台的能力.

Telerik平台看起来不错,但我怀疑以每月39美元的当前价格(以"对于修补匠和业余爱好者来说是理想的")的"开发者"产品是足够的,所以我会看到79美元的承诺一个月前付了一年 - 哎哟!我也不确定这笔费用是否涵盖了完整申请的所有许可(我希望如此).

由于我的关键标准之一是易于安装,配置和构建,我倾向于Rhomobile或Telerik,这取决于我作为构建和提交这些应用程序的开发人员的最终成本.

所有事情都被认为是我在正确的轨道上或仍然非常不知情?

非常感谢.

titanium rhomobile cordova xamarin telerik-appbuilder

15
推荐指数
1
解决办法
1万
查看次数

Web API 2需要使用尾部斜杠才能使自定义属性路由起作用

我已经创建了一个Web API 2项目,尽管API工作正常,但我必须为它们输入一个尾部斜杠.

这导致404

http://www.myURL.com/api/v1/get/addressfromlatlong/UK/50.9742794/-0.1146699
Run Code Online (Sandbox Code Playgroud)

这显示了预期的JSON响应

http://www.myURL.com/api/v1/get/addressfromlatlong/UK/50.9742794/-0.1146699/
Run Code Online (Sandbox Code Playgroud)

我有另一个控制器与自定义操作工作正常.唯一的区别是它有一个整数参数...

它似乎与十进制类型有关,就好像我在URL中稍微变化并使用参数一样,API返回结果而没有问题:

此变体还按预期显示JSON响应

http://www.myURL.com/api/v1/get/addressfromlatlong/UK/50.9742794/?longitude=-0.1146699
Run Code Online (Sandbox Code Playgroud)

这不是世界末日,但我也使用Swagger生成我的API文档,并自动使用上述第一个URL,并包含内置测试,当然,这些测试失败了.对于那些引用API文档的开发人员来说,这并不是那么好.

任何人都可以解释为什么会发生这种情况以及如何在没有尾随斜线的情况下使其工作?

路线配置

public static void RegisterRoutes(RouteCollection routes)
    {
        routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

        routes.MapMvcAttributeRoutes();

        routes.MapRoute(
            name: "Default",
            url: "{controller}/{action}/{id}",
            defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
        );
    }
Run Code Online (Sandbox Code Playgroud)

自定义属性和Controller Action

[Route("get/addressfromlatlong/UK/{latitude:decimal=0}/{longitude:decimal=0}")]
    public AddressDetails GetAddressDetailsByLatLong(decimal latitude, decimal longitude)
    {
        AddressDetails addressDetails = repository.GetAddressDetailsByLatLong(latitude, longitude);
        return addressDetails;
    }
Run Code Online (Sandbox Code Playgroud)

rest asp.net-mvc asp.net-web-api2

8
推荐指数
1
解决办法
1868
查看次数

计算每天两个日期时间字段之间的平均时差

我有一个包含两个日期时间字段“BookedDateTime”和“PickupDateTime”的出租车数据库。客户需要知道从预订出租车到司机实际“接”客户的平均等待时间。

数据库中有一堆行覆盖了几个月的数据。

目标是制作一个查询,显示每日平均值。

所以一个超级简单的例子是:

BookedDateTime           | PickupDateTime
2014-06-09 12:48:00.000    2014-06-09 12:45:00.000
2014-06-09 12:52:00.000    2014-06-09 12:58:00.000    
2014-06-10 20:23:00.000    2014-06-10 20:28:00.000
2014-06-10 22:13:00.000    2014-06-10 22:13:00.000
Run Code Online (Sandbox Code Playgroud)

2014-06-09 ((-3 + 6) / 2) = 平均值为 00:03:00.000(3 分钟)

2014-06-10 ((5 + 0) / 2) = 平均值为 00:02:30.000(2.5 分钟)

这是可能的还是我需要在代码(即 C#)中进行一些数字运算?

任何指针将不胜感激。

sql t-sql datetime date

6
推荐指数
1
解决办法
2万
查看次数

如何从SQL Server Geography数据类型字段中选择Lat&Long坐标

考虑SQL Server的"地理"数据类型......

我可以输入一个纬度和经度数组(顺便说一句,这是正确的顺序还是经度纬度?),如下所示:

INSERT INTO SpatialZonePolygons (Coordinates)
VALUES (geography::STGeomFromText('POLYGON((-122.358 47.653 , -122.348 47.649, -122.348 47.658, -122.358 47.658, -122.358 47.653))', 4326));
GO
Run Code Online (Sandbox Code Playgroud)

然后显示为:

0xE6100000010405000000DD24068195D34740F4FDD478E9965EC0508D976E12D3474083C0CAA145965EC04E62105839D4474083C0CAA145965EC04E62105839D44740F4FDD478E9965EC0DD24068195D34740F4FDD478E9965EC001000000020000000001000000FFFFFFFF0000000003
Run Code Online (Sandbox Code Playgroud)

如何将它们选择回纬度和经度格式?

非常感谢.

sql sqlgeography

6
推荐指数
2
解决办法
8559
查看次数

SQL Server STIntersects查询返回误报

问题

STIntersects正在返回误报

场景

  1. 我使用GoogleMaps绘制一个表示"伦敦拥堵费"区域的多边形,并将坐标保存到地理区域中的数据库中
  2. 我从Google Directions API获取了一条路线的折线
  3. 我检查折线是否与我存储的任何区域相交.

问题

  1. 一条路线在伦敦附近无处可去(避开它50英里),但STIntersects正在展示伦敦市中心伦敦拥堵费多边形的交叉点.
  2. 我知道折线很好,因为我可以在Google地图上渲染它并看到它.我也知道这不是问题(见后)
  3. 多边形坐标似乎绝对正常(虽然我怀疑这里有些不对劲),因为当我在Google地图上直观地渲染多边形时,它会正确显示.

我相信多边形坐标是一个贡献者是因为我尝试了以下内容:

  1. 我创建了两个完全独立的应用程序和数据库实例
  2. 我已经更明确地绘制了伦敦拥堵冲锋区(更多点)
  3. 虽然在视觉上它们看起来非常相似(它们都覆盖了伦敦拥堵收费区域)但是具有更多积分的版本可以正常工作.折线可以直接传递到它旁边而没有报告的交叉点,而具有较少点的版本返回假折线的假阳性,距离它几英里(50奇数).

怎么会这样?

这是重建问题的方法.

将问题多边形添加到地理数据库字段:

INSERT INTO Polygons (ZoneName,Coordinates) VALUES ('IDoNotWork',geography::STGeomFromText(‘POLYGON ((51.48822 -0.13046, 51.49763 -0.09613, 51.51045 -0.07828, 51.52242 -0.09064, 51.52583 -0.1181, 51.52071 -0.15106, 51.50361 -0.14626, 51.48822 -0.13046)) ', 4326))
Run Code Online (Sandbox Code Playgroud)

将工作多边形添加到地理数据库字段:

INSERT INTO Polygons (ZoneName,Coordinates) VALUES ('IWork',geography::STGeomFromText('POLYGON ((51.51964 -0.16788, 51.5222 -0.15518, 51.52412 -0.14076, 51.52925 -0.12463, 51.52968 -0.12222, 51.5284 -0.11776, 51.53139 -0.11158, 51.52968 -0.09853, 51.52626 -0.08892, 51.52541 -0.08377, 51.51665 -0.07244, 51.50596 -0.07622, 51.49592 -0.08411, 51.49506 -0.09544, …
Run Code Online (Sandbox Code Playgroud)

sql sql-server google-maps sqlgeography

6
推荐指数
1
解决办法
1276
查看次数

Code First中的Code First创建无效的导航属性

我正在使用Entity Framework从现有数据库表生成模型.在"实体数据模型向导"中,我选择了"数据库中的代码优先"选项,为我提供了POCO类.每个类都应镜像数据库表,并包含与表中的列对应的属性.

问题是,当我运行项目时,我得到与实际数据库中不存在的导航属性相关的错误.这些是典型的EF生成的导航属性:

Invalid column name 'Attribute_AttributeId' and Invalid column name 'Shift_ShiftId'
Run Code Online (Sandbox Code Playgroud)

数据库中没有实际的字段,因为(我相信)这些动态导航字段是在运行时创建的:

在此输入图像描述

为了完整起见,这里是导致此错误的'Driver'模型.有很多"虚拟"属性在运行时创建一个新类(动态代理)来创建加载导航属性的逻辑:

namespace IntrinsicDataLoader.Models
{
    using System;
    using System.Collections.Generic;
    using System.ComponentModel.DataAnnotations;
    using System.ComponentModel.DataAnnotations.Schema;
    using System.Data.Entity.Spatial;

    public partial class Driver
    {
        public Driver()
        {
            DriverTrackings = new HashSet<DriverTracking>();
            DriverVehicles = new HashSet<DriverVehicle>();
        }

        public int DriverId { get; set; }

        public Guid DriverGuid { get; set; }

        public long ActivityLogId { get; set; }

        [Required]
        [StringLength(10)]
        public string DriverNumber { get; set; }

        public long TransportProvideId { …
Run Code Online (Sandbox Code Playgroud)

asp.net-mvc entity-framework ef-code-first

6
推荐指数
1
解决办法
378
查看次数

TSQL尝试清理并将杂乱的字符串字段转换为十进制以执行SUM函数

我想写一些SQL来实现以下目标.

"向我展示每日结果,详细说明报价数量及其相关票价的总和,其中票价不为空,QuoteOrBooking等于'报价'".

所以,鉴于下表,我正在寻找以下结果:

Date        Quotes  TotalValue
2013-08-06  3       228.00
2013-08-07  2       80.00
Run Code Online (Sandbox Code Playgroud)

正如你所看到的,Fare是一个(相当混乱的)字符串字段,所以我需要清理它并转换为小数.这是我坚持的一点.下面的例子显示了问题的严重程度(例如,如果我能让它为这些数据工作,它将适用于整个数据库).

我想我搞乱了REPLACE的使用,我不确定在尝试将字符串转换为小数时是否存在句点(.)是否可接受.

+-------------+------------+----------------+
| BookingDate | Fare       | QuoteOrBooking |
+-------------+------------+----------------+
| 2013-08-06  | NULL       | Quote          |
| 2013-08-06  | 21         | Booking        |
| 2013-08-06  | 97         | Quote          |
| 2013-08-06  | £131       | Quote          |
| 2013-08-07  | 21.00      | Quote          |
| 2013-08-07  | 59.        | Quote          |
| 2013-08-07  | NULL       | Quote          |
| 2013-08-07  | 97         | Booking        |
+-------------+------------+----------------+ …
Run Code Online (Sandbox Code Playgroud)

sql t-sql sql-server casting

3
推荐指数
1
解决办法
262
查看次数

数据库地理类型 MakeValid 似乎不起作用

我有一个应用程序,用户可以在其中绘制区域,然后检查多段线是否穿过它们。

突然间,应用程序因错误而崩溃:

A .NET Framework error occurred during execution of user-defined routine or aggregate "geography": 
System.ArgumentException: 24144: This operation cannot be completed because the instance is not valid. Use MakeValid to convert the instance to a valid instance. Note that MakeValid may cause the points of a geometry instance to shift slightly.
System.ArgumentException: 
  at Microsoft.SqlServer.Types.SqlGeography.STIntersects(SqlGeography other)
Run Code Online (Sandbox Code Playgroud)

我对“Use MakeValid”消息感到惊讶,因为我正在使用“MakeValid”,如下所示:

Select ZonePolygonId, ZoneName, isHome  FROM dbo.SpatialZonePolygons 
WHERE Coordinates.STIntersects(geography::STGeomFromText('LINESTRING(51.15826 -0.18398, 51.15855 -0.18404, 51.15883 -0.18414, 51.15903 -0.18427, 51.15915 -0.18437, 51.15922 -0.1845, 51.15918 -0.18493, 51.15882 …
Run Code Online (Sandbox Code Playgroud)

.net c# t-sql sqlgeography

3
推荐指数
1
解决办法
8868
查看次数