小编Chr*_*ini的帖子

如何为C#MVC4 WebAPI应用程序全局记录所有异常?

背景

我正在为客户开发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)

c# error-handling asp.net-web-api

170
推荐指数
3
解决办法
8万
查看次数

无法执行BACKUP LOG,因为没有当前的数据库备份

我尝试恢复数据库,但此消息显示.如何恢复此数据库?

恢复数据库'farhangi_db'失败.
(Microsoft.SqlServer.Management.RelationalEngineTasks)
------------------------------附加信息:

System.Data.SqlClient.SqlError:无法执行BACKUP LOG,因为
没有当前的数据库备份.(Microsoft.SqlServer.SmoExtended)

sql-server

89
推荐指数
4
解决办法
10万
查看次数

通过JSON将对象数组发布到ASP.Net MVC3

我正在寻找通过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)

arrays post json asp.net-mvc-3

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

将long/lat转换为给定图片上的像素x/y

我有莫斯科的城市地图.我们使用一些艺术元素修改了Google地图图像,但GPS坐标和像素之间的关系保持不变.

问题:如何将GPS坐标从我们拥有的各种数据点转换为图像中的像素坐标?

理想情况下,我可以在Javascript中执行此操作,但PHP可以.


我知道在小尺度上(例如在城市尺度上)它可以做得足够简单(有必要了解哪个地理坐标有一个图像角点,然后在轴上的图片上学习地理坐标中一个像素的"价格" OX和OY分开).

但是在大尺度(国家规模)上,一个像素的"价格"将不是常数,并且将足够强烈地变化并且不能应用上述方法.

如何解决国家规模的问题?


更新:

我不使用API​​谷歌地图,我只有:对象的地理坐标(它们来自谷歌地图),我仍然在我的网站上有一个简单的图片*.gif,我必须在其中绘制一个相应的地理坐标点.

javascript google-maps coordinates google-maps-static-api

64
推荐指数
5
解决办法
10万
查看次数

如何在chrome扩展中的popup.js和background.js之间进行通信?

来自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)

javascript google-chrome-extension

42
推荐指数
2
解决办法
4万
查看次数

错误"命名空间不直接包含字段或方法等成员"

我正在尝试构建我的C#项目,并且我收到错误消息"命名空间不直接包含诸如字段或方法之类的成员".它正在标记app.config文件的第一个字符(小于符号).

我已经检查了所有文件,找到了直接在命名空间内有变量或函数的地方 - 什么也没找到.app.config看起来很好.

谷歌让我失望了,我把头发拉了出来.可能导致此错误的原因是什么?

namespaces buildaction visual-studio

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

vertical-align:中间有Bootstrap 2

我使用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)

没有工作.有人有想法吗?提前致谢.

html css html5 twitter-bootstrap-2

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

EF代码优先 - 1对1可选关系

我想使用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)

我得到以下例外: …

one-to-one ef-code-first

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

Asp.Net MVC3到MVC4升级工具?

我知道手动指南从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个版本......显然这些都不是很吸引人.我更愿意只更新旧项目的工具集,并将所有内容都纳入奇偶校验.

asp.net upgrade asp.net-mvc-3 asp.net-mvc-4

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

如何使用javascript获取chrome扩展程序中当前Tab的URL

我刚刚开始使用谷歌Chrome扩展程序开发,我的项目涉及制作一个扩展程序,点击该链接时会打印当前打开的页面/选项卡的URL.

因此,如果我在谷歌的主页上并点击我的扩展程序,我需要在扩展程序中输入" https://www.google.com/ "作为我的输出.

我需要使用javascript来执行此操作,并且无法找到我理解的代码以及执行此操作的代码.我读到了关于使用"window.location"和"document.href"的东西,但是这不会给我只是我的扩展名而不是当前标签的网址吗?

请帮我开始吧 提前致谢.

javascript url google-chrome-extension

26
推荐指数
3
解决办法
4万
查看次数