小编Hak*_*tık的帖子

C#帮助使用StreamReader读取外来字符

我正在使用下面的代码来读取包含外来字符的文本文件,该文件是ANSI编码的,在记事本中看起来很好.下面的代码不起作用,当读取文件值并在数据网格中显示字符显示为正方形时,其他地方是否会出现其他问题?

StreamReader reader = new StreamReader(inputFilePath, System.Text.Encoding.ANSI);
using (reader = File.OpenText(inputFilePath))
Run Code Online (Sandbox Code Playgroud)

谢谢

更新1:我已经尝试了所有编码System.Text.Encoding.并且都无法正确显示文件.

更新2:我已经将文件编码(重新保存文件)更改为unicode并使用,System.Text.Encoding.Unicode并且它工作得很好.那么为什么记事本读得正确呢?为什么没有System.Text.Encoding.Unicode读取ANSI文件?

c# encoding

58
推荐指数
6
解决办法
13万
查看次数

没有返回结果时处理ExecuteScalar()

我使用以下SQL查询和ExecuteScalar()方法从Oracle数据库中获取数据:

sql = "select username from usermst where userid=2"
string getusername = command.ExecuteScalar();
Run Code Online (Sandbox Code Playgroud)

它向我显示此错误消息:

System.NullReferenceException:未将对象引用设置为对象的实例

当数据库表中没有行时,会发生此错误userid=2.
我该如何处理这种情况?

c# oracle ado.net

55
推荐指数
9
解决办法
14万
查看次数

System.ComponentModel.DataAnnotations.compare与System.Web.Mvc.Compare

升级到.Net 4.5后,MVC 4 Beta项目无法编译.

这是由于和之间的冲突 System.ComponentModel.DataAnnotations.CompareAttribute 而发生的System.Web.Mvc.CompareAttribute

System.ComponentModel.DataAnnotations.CompareAttributeMSDN文档说:

提供比较两个属性的属性.

虽然System.Web.Mvc.CompareAttributeMSDN文档说:

提供比较模型的两个属性的属性.

两者之间有什么区别,什么时候使用它们会"更聪明"?

10X.

asp.net-mvc-4

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

在asp.net mvc中点火并忘记异步方法

一般的答案,如这里这里发射后不管的问题是不使用异步/ AWAIT,但使用Task.RunTaskFactory.StartNew在同步方式传递来代替.
但是,有时我想要发射并忘记的方法是异步的,并且没有等效的同步方法.

更新注释/警告:正如Stephen Cleary在下面指出的那样,在您发送响应后继续处理请求是危险的.原因是AppDomain可能会在该工作仍在进行时关闭.有关详细信息,请参阅其响应中的链接.无论如何,我只是想提前指出,所以我不会让任何人走错路.

我认为我的情况是有效的,因为实际工作是由不同的系统(不同服务器上的不同计算机)完成的,所以我只需要知道该消息已经留给该系统.如果存在异常,则服务器或用户无法对其进行任何操作并且不会影响用户,我需要做的就是参考异常日志并手动清理(或实现一些自动机制).如果关闭AppDomain,我将在远程系统中有一个残留文件,但是我将在常规维护周期中选择它,因为我的Web服务器(数据库)不再知道它的存在,并且它的名称是唯一的时间戳,它仍然会徘徊不会导致任何问题.

如果我能像Stephen Cleary所指出的那样访问持久性机制,那将是理想的,但不幸的是我现在还没有.

我认为只是假装DeleteFoo请求在客户端(javascript)已经完成,同时保持请求打开,但我需要响应中的信息继续,所以它会保持原状.

那么,原来的问题......

例如:

//External library
public async Task DeleteFooAsync();
Run Code Online (Sandbox Code Playgroud)

在我的asp.net mvc代码中,我想以一种即发即忘的方式调用DeleteFooAsync - 我不想阻止等待DeleteFooAsync完成的响应.如果DeleteFooAsync由于某种原因失败(或抛出异常),则用户或程序无法对其进行任何操作,因此我只想记录错误.

现在,我知道任何异常都会导致未观察到的异常,所以我能想到的最简单的情况是:

//In my code
Task deleteTask = DeleteFooAsync()

//In my App_Start
TaskScheduler.UnobservedTaskException += ( sender, e ) =>
{
    m_log.Debug( "Unobserved exception! This exception would have been unobserved: {0}", e.Exception );
    e.SetObserved();
};
Run Code Online (Sandbox Code Playgroud)

这样做有风险吗?

我能想到的另一个选择是制作我自己的包装器,例如:

private void async DeleteFooWrapperAsync()
{
    try
    {
        await DeleteFooAsync();
    }
    catch(Exception …
Run Code Online (Sandbox Code Playgroud)

.net c# asp.net asynchronous async-await

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

MVC4捆绑CSS失败意外令牌,发现'@import'

我正在尝试使用捆绑来组合和缩小一些CSS文件.在我的Global.aspx.cs中,Application_Start我有以下内容:

    var jsBundle = new Bundle("~/JSBundle", new JsMinify());
    jsBundle.AddDirectory("~/Scripts/", "*.js", false);
    jsBundle.AddFile("~/Scripts/KendoUI/jquery.min.js");
    jsBundle.AddFile("~/Scripts/KendoUI/kendo.web.min.js");
    BundleTable.Bundles.Add(jsBundle);

    var cssBundle = new Bundle("~/CSSBundle", new CssMinify());
    cssBundle.AddDirectory("~/Content/", "*.css", false);
    cssBundle.AddDirectory("~/Content/themes/base/", "*.css", false);
    cssBundle.AddFile("~/Styles/KendoUI/kendo.common.min.css");
    cssBundle.AddFile("~/Styles/KendoUI/kendo.default.min.css");
    BundleTable.Bundles.Add(cssBundle);
Run Code Online (Sandbox Code Playgroud)

在我的.cshtml文件中,我有以下内容:

<link href="/CSSBundle" rel="stylesheet" type="text/css" />
<script src="/JSBundle" type="text/javascript"></script>
Run Code Online (Sandbox Code Playgroud)

但是,当我查看我的bundle CSS文件的源代码时,它具有以下内容:

/* Minification failed. Returning unminified contents.
(40,1): run-time error CSS1019: Unexpected token, found '@import'
(40,9): run-time error CSS1019: Unexpected token, found '"jquery.ui.base.css"'
Run Code Online (Sandbox Code Playgroud)

......还有更多

关于如何解决这个问题的任何想法?

我确实将它缩小到以下行:

cssBundle.AddDirectory("~/Content/themes/base/", "*.css", false);
Run Code Online (Sandbox Code Playgroud)

如果我只有那行代码,我会得到相同的错误.

c# asp.net-mvc bundle asp.net-optimization

51
推荐指数
2
解决办法
3万
查看次数

如何从ASP.NET MVC 3设置HTTP状态代码?

我们在前端使用OpenWeb js库,当发生某些类型的错误时,他们需要.NET中间层向他们发送特定的HTTP头状态代码.我试图通过这样做来实现这一点:

public ActionResult TestError(string id) // id = error code
{
    Request.Headers.Add("Status Code", id);
    Response.AddHeader("Status Code", id);
    var error = new Error();
    error.ErrorID = 123;
    error.Level = 2;
    error.Message = "You broke the Internet!";

    return Json(error, JsonRequestBehavior.AllowGet);
}
Run Code Online (Sandbox Code Playgroud)

它有点中途了.请参见屏幕截图: http状态代码http://zerogravpro.com/temp/pic.png

注意我在响应头中获得了400的状态代码,但我确实需要请求头中的400.相反,我得到"200 OK".我怎样才能做到这一点?

我进行调用的URL结构很简单:/ Main/TestError/400

.net c# asp.net-mvc-3

51
推荐指数
2
解决办法
8万
查看次数

如何获取HttpRequestMessage数据

我有一个MVC API控制器,具有以下操作.

我不明白如何阅读消息的实际数据/正文?

[HttpPost]
public void Confirmation(HttpRequestMessage request)
{
    var content = request.Content;
}
Run Code Online (Sandbox Code Playgroud)

c# asp.net-mvc

50
推荐指数
3
解决办法
9万
查看次数

Safari <input type ="file"accept ="video/*">忽略mp4文件

我正在使用这样的HTML文件输入:

<input type="file" accept="video/*"> 
Run Code Online (Sandbox Code Playgroud)

允许我的用户将视频上传到我的网站.除了Safari之外,这在所有现代浏览器中都能正常工作(只允许用户选择视频文件).

据我所知,Safari似乎将该accept="video/*"属性解释为accept="*.mov"忽略了大多数(如果不是全部)其他视频格式/扩展(webm,m4v等).

有关如何让选择对话框只允许在Safari中使用常见视频文件类型(不仅仅是.mov)的任何建议吗?

safari video file-io mp4 attributes

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

打开xml excel读取单元格值

我正在使用Open XML SDK打开Excel xlsx文件,并尝试读取每个工作表中位置A1的单元格值.我使用以下代码:

using (SpreadsheetDocument spreadsheetDocument = SpreadsheetDocument.Open(openFileDialog1.FileName, false))
{
    var sheets = spreadsheetDocument.WorkbookPart.Workbook.Descendants<Sheet>();

    foreach (Sheet sheet in sheets)
    {
        WorksheetPart worksheetPart = (WorksheetPart)spreadsheetDocument.WorkbookPart.GetPartById(sheet.Id);
        Worksheet worksheet = worksheetPart.Worksheet;

        Cell cell = GetCell(worksheet, "A", 1);

        Console.Writeline(cell.CellValue.Text);
     }
}

private static Cell GetCell(Worksheet worksheet, string columnName, uint rowIndex)
{
     Row row = GetRow(worksheet, rowIndex);

     if (row == null)
         return null;

     return row.Elements<Cell>().Where(c => string.Compare
               (c.CellReference.Value, columnName +
               rowIndex, true) == 0).First();
}

// Given a worksheet and a row index, return …
Run Code Online (Sandbox Code Playgroud)

c# openxml openxml-sdk

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

knockout.js完成呈现所有元素后成功回调

我实现了一个淘汰赛的foreach结合,在同一个页面多个模板,范例之一,这里给出的,我感兴趣是找出当块呈现完毕后,我曾尝试afterRenderafterAdd,但我想它运行的每个元素,而不是整个循环结束后.

<ul data-bind="foreach: {data: Contacts, afterAdd: myPostProcessingLogic}">
  <li>
    <div class="list_container gray_bg mrgT3px">
      <div class="list_contact_icon"></div>
      <div class="contact_name"><span data-bind="text: first_name"></span> <span data-bind="text: last_name"></span></div>
      <div class="contact_number"><span data-bind="text: value"></span></div>
      <div class="callsms_container">
        <a href="#notification-box" class="notifcation-window">
          <div class="hover_btn tooltip_call">
            <div class="hover_call_icon"></div>
            <span>Call</span></div>
        </a>
        <a class="sendsms" href="#sendsms" rel="#sendsms">
          <div class="hover_btn tooltip_sms">
            <div class="hover_sms_icon"></div>
            <span>SMS</span></div>
        </a>
        <a href="#">
          <div class="hover_more_btn"></div>
        </a>
      </div>
      <!-- close callsms container -->
      <div id="notification-box" class="notification-popup">
        <a href="#" class="close"><img class="btn_close" src="images/box_cross.png" /></a> <img class="centeralign" src="images/notification_call.png" /> <span>Calling... +44 7401 287366</span> …
Run Code Online (Sandbox Code Playgroud)

foreach jquery knockout.js

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