我正在使用下面的代码来读取包含外来字符的文本文件,该文件是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文件?
我使用以下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.
我该如何处理这种情况?
升级到.Net 4.5后,MVC 4 Beta项目无法编译.
这是由于和之间的冲突
 System.ComponentModel.DataAnnotations.CompareAttribute  而发生的System.Web.Mvc.CompareAttribute
System.ComponentModel.DataAnnotations.CompareAttributeMSDN文档说:
提供比较两个属性的属性.
虽然System.Web.Mvc.CompareAttributeMSDN文档说:
提供比较模型的两个属性的属性.
两者之间有什么区别,什么时候使用它们会"更聪明"?
10X.
一般的答案,如这里和这里   来发射后不管的问题是不使用异步/ AWAIT,但使用Task.Run或TaskFactory.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) 我正在尝试使用捆绑来组合和缩小一些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)
如果我只有那行代码,我会得到相同的错误.
我们在前端使用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
我有一个MVC API控制器,具有以下操作.
我不明白如何阅读消息的实际数据/正文?
[HttpPost]
public void Confirmation(HttpRequestMessage request)
{
    var content = request.Content;
}
Run Code Online (Sandbox Code Playgroud) 我正在使用这样的HTML文件输入:
<input type="file" accept="video/*"> 
Run Code Online (Sandbox Code Playgroud)
允许我的用户将视频上传到我的网站.除了Safari之外,这在所有现代浏览器中都能正常工作(只允许用户选择视频文件).
据我所知,Safari似乎将该accept="video/*"属性解释为accept="*.mov"忽略了大多数(如果不是全部)其他视频格式/扩展(webm,m4v等).
有关如何让选择对话框只允许在Safari中使用常见视频文件类型(不仅仅是.mov)的任何建议吗?
我正在使用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) 我实现了一个淘汰赛的foreach结合,在同一个页面多个模板,范例之一,这里给出的,我感兴趣是找出当块呈现完毕后,我曾尝试afterRender和afterAdd,但我想它运行的每个元素,而不是整个循环结束后.
<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) c# ×7
.net ×2
asp.net-mvc ×2
ado.net ×1
asp.net ×1
async-await ×1
asynchronous ×1
attributes ×1
bundle ×1
encoding ×1
file-io ×1
foreach ×1
jquery ×1
knockout.js ×1
mp4 ×1
openxml ×1
openxml-sdk ×1
oracle ×1
safari ×1
video ×1