我正在为客户开发API服务层,并且我被要求在全局范围内捕获并记录所有错误.
因此,虽然通过使用ELMAH或通过向以下内容添加类似内容,可以轻松处理类似未知端点(或操作)的内容Global.asax:
protected void Application_Error()
{
Exception unhandledException = Server.GetLastError();
//do more stuff
}
Run Code Online (Sandbox Code Playgroud)
...不会记录与路由无关的未处理错误.例如:
public class ReportController : ApiController
{
public int test()
{
var foo = Convert.ToInt32("a");//Will throw error but isn't logged!!
return foo;
}
}
Run Code Online (Sandbox Code Playgroud)
我还尝试[HandleError]通过注册此过滤器来全局设置该属性:
filters.Add(new HandleErrorAttribute());
Run Code Online (Sandbox Code Playgroud)
但这也不会记录所有错误.
如何拦截错误,例如通过调用/test上面生成的错误,以便我可以记录它们?似乎这个答案应该是显而易见的,但我已经尝试了迄今为止我能想到的一切.
理想情况下,我想在错误记录中添加一些内容,例如请求用户的IP地址,日期,时间等.我还希望能够在遇到错误时自动通过电子邮件发送支持人员.所有这些我都可以做到,只要我能在它们发生时拦截这些错误!
感谢Darin Dimitrov,我接受了他的回答,我弄清楚了. 的WebAPI并没有以同样的方式作为一个普通MVC控制器处理错误.
这是有效的:
1)在命名空间中添加自定义过滤器:
public class ExceptionHandlingAttribute : ExceptionFilterAttribute
{
public override void OnException(HttpActionExecutedContext context)
{
if (context.Exception is BusinessException)
{
throw new HttpResponseException(new …Run Code Online (Sandbox Code Playgroud) 我尝试恢复数据库,但此消息显示.如何恢复此数据库?
恢复数据库'farhangi_db'失败.
(Microsoft.SqlServer.Management.RelationalEngineTasks)
------------------------------附加信息:System.Data.SqlClient.SqlError:无法执行BACKUP LOG,因为
没有当前的数据库备份.(Microsoft.SqlServer.SmoExtended)
我正在寻找通过JSON将对象数组发布到MVC3的解决方案.
我正在处理的示例代码:http: //weblogs.asp.net/scottgu/archive/2010/07/27/introducing-asp-net-mvc-3-preview-1.aspx
JS:
var data = { ItemList: [ {Str: 'hi', Enabled: true} ], X: 1, Y: 2 };
$.ajax({
url: '/list/save',
data: JSON.stringify(data),
success: success,
error: error,
type: 'POST',
contentType: 'application/json, charset=utf-8',
dataType: 'json'
});
Run Code Online (Sandbox Code Playgroud)
ListViewModel.cs:
public class ListViewModel
{
public List<ItemViewModel> ItemList { get; set; }
public float X { get; set; }
public float Y { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
ItemViewModel.cs:
public class ItemViewModel
{
public string Str; // originally posted with: { get; …Run Code Online (Sandbox Code Playgroud) 我有莫斯科的城市地图.我们使用一些艺术元素修改了Google地图图像,但GPS坐标和像素之间的关系保持不变.
问题:如何将GPS坐标从我们拥有的各种数据点转换为图像中的像素坐标?
理想情况下,我可以在Javascript中执行此操作,但PHP可以.
我知道在小尺度上(例如在城市尺度上)它可以做得足够简单(有必要了解哪个地理坐标有一个图像角点,然后在轴上的图片上学习地理坐标中一个像素的"价格" OX和OY分开).
但是在大尺度(国家规模)上,一个像素的"价格"将不是常数,并且将足够强烈地变化并且不能应用上述方法.
如何解决国家规模的问题?
更新:
我不使用API谷歌地图,我只有:对象的地理坐标(它们来自谷歌地图),我仍然在我的网站上有一个简单的图片*.gif,我必须在其中绘制一个相应的地理坐标点.
来自popup.js的消息被发送两次到background.js,但我从background.js中得到的一切都没有.
background.js
function login(username,password){
console.log(username);
var xhr = new XMLHttpRequest();
xhr.open("POST", "http://localhost:3000/login/", true);
xhr.setRequestHeader('Content-type','application/json; charset=utf-8');
data = {"username":username,"password":password};
console.log(JSON.stringify(data));
xhr.send(JSON.stringify(data));
xhr.onreadystatechange = function() {
if (xhr.readyState == 4) {
// JSON.parse does not evaluate the attacker's scripts.
var resp = JSON.parse(xhr.responseText);
console.log(resp);
var lStorage = localStorage;
localStorage.setItem("username",resp["username"]);
localStorage.setItem("apiKey",resp["apiKey"]);
localStorage.setItem("password",resp["password"]);
console.log(localStorage.getItem("username"));
}
};
}
chrome.extension.onRequest.addListener(
function(request, sender, sendResponse){
console.log("hello");
if(request.msg == "login") {
//alert(request.password);
login(request.username,request.password);}
}
);
chrome.extension.onConnect.addListener(function(port) {
console.log("Connected .....");
port.onMessage.addListener(function(msg) {
console.log("message recieved "+ msg);
port.postMessage("Hi Popup.js");
});
}); …Run Code Online (Sandbox Code Playgroud) 我正在尝试构建我的C#项目,并且我收到错误消息"命名空间不直接包含诸如字段或方法之类的成员".它正在标记app.config文件的第一个字符(小于符号).
我已经检查了所有文件,找到了直接在命名空间内有变量或函数的地方 - 什么也没找到.app.config看起来很好.
谷歌让我失望了,我把头发拉了出来.可能导致此错误的原因是什么?
我使用twitter bootstrap,我想将verticaly div与图片和右边的文本对齐.
这是代码:
<ol class="row" id="possibilities">
<li class="span6">
<div class="row">
<div class="span3">
<p>some text here</p>
<p>Text Here too</p>
</div>
<figure class="span3"><img src="img/screenshots/options.png" alt="Some text" /></figure>
</div>
</li>
<li class="span6">
<div class="row">
<figure class="span3"><img src="img/qrcode.png" alt="Some text" /></figure>
<div class="span3">
<p>Some text</p>
<p>Some text here too.</p>
</div>
</div>
</li>
</ol>
Run Code Online (Sandbox Code Playgroud)
我试过这个但不是wortks:
.span6 .row{display: table;}
.span6 .row .span3, .span6 .row figure{display:table-cell; vertical-align: middle;}
Run Code Online (Sandbox Code Playgroud)
我也试过这个:
.span6 .row .span3{display: inline-block; vertical-align: middle;}
Run Code Online (Sandbox Code Playgroud)
没有工作.有人有想法吗?提前致谢.
我想使用EF Code First在现有数据库中映射可选的1对1关系.
简单架构:
User
Username
ContactID
Contact
ID
Name
Run Code Online (Sandbox Code Playgroud)
显然ContactID加入了Contact.ID.ContactID字段可以为空,因此关系是可选的 - 0或1,从不多.
那么如何使用现有模式在EF Code First中指定此关系?
这是我到目前为止所尝试的:
public class User
{
[Key]
public string Username { get; set; }
public int? ContactID { get; set; }
[ForeignKey("ContactID")]
public virtual Contact Contact { get; set; }
}
public class Contact
{
[Key]
public int ID { get; set; }
public string Name { get; set; }
public virtual User User { get; set; }
}
modelBuilder.Entity<User>().HasOptional<Contact>(u=> u.Contact)
.WithOptionalDependent(c => c.User);
Run Code Online (Sandbox Code Playgroud)
我得到以下例外: …
我知道手动指南从3升级到4,如下所示:http: //www.dotnetexpertguide.com/2011/12/upgrade-aspnet-mvc-3-project-to-mvc-4.html
指南的细节各不相同,这清楚地标明了危险.有没有一个工具可以处理从MVC3项目到MVC4的过渡?这隐含地意味着从.Net 4迁移到.Net 4.5,这对于Microsoft在两个版本之间添加的所有命名空间重定向确实有一些重大影响.
我也知道手动指南,基本上说放弃升级,而只是创建一个新项目,并将东西一块一块地移植到新项目中.这有很多明显的机会可以让小错误产生大问题.
所以,一个经过测试的工具我可以指望不会犯一个愚蠢的错误,就像我在这里可能会有所帮助一样.那存在吗?有一个从MVC2到3的工具,所以没有找到3到4的一个让我感到惊讶.
为什么我要升级的背景:我们在.Net 4.5 MVC4上有几个较新的项目,以及.Net 4 MVC3上的一个重要的旧项目(其中一些.Net 2和MVC 2混合在......),以及更多我们的共享图书馆向前推进了旧项目的挣扎.我们可以明显冻结上一次共享库的工作,或者分叉它们并维护2个版本......显然这些都不是很吸引人.我更愿意只更新旧项目的工具集,并将所有内容都纳入奇偶校验.
我刚刚开始使用谷歌Chrome扩展程序开发,我的项目涉及制作一个扩展程序,点击该链接时会打印当前打开的页面/选项卡的URL.
因此,如果我在谷歌的主页上并点击我的扩展程序,我需要在扩展程序中输入" https://www.google.com/ "作为我的输出.
我需要使用javascript来执行此操作,并且无法找到我理解的代码以及执行此操作的代码.我读到了关于使用"window.location"和"document.href"的东西,但是这不会给我只是我的扩展名而不是当前标签的网址吗?
请帮我开始吧 提前致谢.
javascript ×3
arrays ×1
asp.net ×1
buildaction ×1
c# ×1
coordinates ×1
css ×1
google-maps ×1
html ×1
html5 ×1
json ×1
namespaces ×1
one-to-one ×1
post ×1
sql-server ×1
upgrade ×1
url ×1