小编Riv*_*vka的帖子

ASP.NET Web API文件另存为"BodyPart_3ded2bfb-40be-4183-b789-9301f93e90af"

我正在使用ASP.NET Web API上传文件.我在RC之前做过这个,但由于某种原因,文件被保存为"BodyPart_3ded2bfb-40be-4183-b789-9301f93e90af"而不是文件名.下面的filename变量也会返回此bodypart字符串而不是文件名.我似乎无法弄清楚我哪里出错了.任何帮助表示赞赏.

客户代码:

function upload() {
    $("#divResult").html("Uploading...");
    var formData = new FormData($('form')[0]); 
    $.ajax({
        url: 'api/files/uploadfile?folder=' + $('#ddlFolders').val(),
        type: 'POST',
        success: function (data) {
            $("#divResult").html(data);
        },
        data: formData,
        cache: false,
        contentType: false,
        processData: false
    });
}; 
Run Code Online (Sandbox Code Playgroud)

控制器:

    public Task<HttpResponseMessage> UploadFile([FromUri]string folder)
    {
        if (!Request.Content.IsMimeMultipartContent())
        {
            throw new HttpResponseException(Request.CreateResponse(HttpStatusCode.UnsupportedMediaType));
        }

        // Save file
        MultipartFormDataStreamProvider provider = new MultipartFormDataStreamProvider(HttpContext.Current.Server.MapPath("~/Files"));
        Task<IEnumerable<HttpContent>> task = Request.Content.ReadAsMultipartAsync(provider);

        return task.ContinueWith<HttpResponseMessage>(contents =>
        {
            string filename = provider.BodyPartFileNames.First().Value;
            return new HttpResponseMessage()
          {
              Content = new StringContent(string.Format("File saved in {0}.", …
Run Code Online (Sandbox Code Playgroud)

asp.net-mvc http multipartform-data file asp.net-web-api

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

SELECT*INTO在SQL Server 2008中保留ORDER BY,但不保留2012

在2008和2012中执行以下SQL.在2008年执行时,返回的结果按正确的排序顺序排列.在2012年,不保留排序顺序.

这是一个已知的变化吗?2012年是否有解决方案来保留排序顺序?

CREATE TABLE #MyTable(Name VARCHAR(50), SortOrder INT)
INSERT INTO #MyTable SELECT 'b', 2 UNION ALL SELECT 'c', 3 UNION ALL SELECT 'a', 1 UNION ALL SELECT 'e', 5 UNION ALL SELECT 'd', 4

SELECT * INTO #Result FROM #MyTable ORDER BY SortOrder

SELECT * FROM #Result

DROP TABLE #MyTable
DROP TABLE #Result
Run Code Online (Sandbox Code Playgroud)

sql sql-server-2008 sql-server-2012

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

SQL Server自动标识字段的最大大小

SQL Server标识字段(int)的最大大小是多少?

我在一些表格中每天删除和插入一些记录,我很好奇这会对自动识别字段产生什么影响.

如果需要,我每晚都可以运行一份工作并截断这些数据.

我很感激你的想法.

谢谢.

sql auto-increment

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

从代码隐藏中调用ASP.NET Web API

如何直接从代码隐藏调用ASP.NET Web API?或者我应该调用从代码隐藏调用getJSON方法的javascript函数?

我通常有类似的东西:

    function createFile() {
        $.getJSON("api/file/createfile",
        function (data) { 
            $("#Result").append('Success!');
        });
    }
Run Code Online (Sandbox Code Playgroud)

任何指针赞赏.TIA.

*我正在使用WebForms.

asp.net webforms getjson asp.net-web-api

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

长时间运行的任务 - 最佳实践 - ASP.NET 4.0,C#

处理需要很长时间才能执行的流程的推荐方法是什么?我不想简单地在服务器上运行它,因为页面会超时.

我浏览了网页,发现了多种方法--AJAX,线程,Web服务......(我没有经验)

处理这个问题的最佳实践方法是什么?

谢谢.

c# asp.net ajax web-services

7
推荐指数
2
解决办法
3880
查看次数

504服务器错误

我正在将数据加载到文本文件中,当过程需要很长时间(大量数据)时,我得到504响应(在Fiddler中查看),显然文件无法生成.我以为我会尝试在web.config中增加会话超时,但这没有帮助.

是否有一些属性可以确定超时?

感谢任何帮助.

asp.net iis http-status-code-504

7
推荐指数
1
解决办法
8652
查看次数

正则表达式 - 在线任何地方的负面回顾

仅当同一行上没有特定字符之前,我如何匹配模式?

我有以下正则表达式代码:

pattern = @"(?<=^|[\s.(<;])(?<!//)(" + Regex.Escape(keyword) + @")(?=[\s.(>])";
replacement = "<span style='" + keywordStyle + "'>$1</span>";
code = Regex.Replace(code, pattern, replacement);
Run Code Online (Sandbox Code Playgroud)

我想添加一个条件,以便仅在同一行之前没有 2 个斜杠时才匹配(C# 注释)。

我玩弄了它,并修改了模式:

pattern = @"(?<!\/\/)(?<=^|[\s.(<;])(?<!//)(" + Regex.Escape(keyword) + @")(?=[\s.(>])";
Run Code Online (Sandbox Code Playgroud)

但显然这仅在 2 个斜杠是关键字之前的2 个字符时才有效。

所以这个模式不会匹配“//foreach”,但会匹配“// foreach”。

在这种情况下可以使用负向后视吗,或者除了负向后视之外,我可以通过其他方式实现这一点吗?

谢谢你。

编辑:

估计我说的不够清楚。重申我的问题:

我正在研究语法高亮,我需要找到 c# 关键字的匹配项,例如“foreach”。但是,我还需要考虑由 2 个斜线定义的注释。我不想匹配关键字“foreach”,如果它是评论的一部分(在同一行之前的任何地方有 2 个斜线。

在这种情况下,负向后视对我没有帮助,因为斜杠不一定在关键字之前,例如“// some text foreach” - 我不希望这个 foreach 匹配。

所以,我的问题是:如何修改我的模式以仅在同一行上没有 2 个斜杠之前的任何位置时才匹配?

希望我的问题现在清楚了。

.net c# regex pattern-matching

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

MailSystem.Net删除消息,IndexOnServer属性= 0

我正在使用MailSystem.NET并尝试从服务器中删除消息.问题是IndexOnServer属性为0,我收到以下错误:

Command "store 0 +flags.silent (\Deleted)" failed : 121031084812790 BAD Error in IMAP command STORE: Invalid messageset
Run Code Online (Sandbox Code Playgroud)

这是我的代码:

    Imap4Client client = new Imap4Client();
    client.Connect(account.Server, account.Username, account.Password);
    var inbox = client.SelectMailbox("Inbox");
    MessageCollection messages = inbox.SearchParse("SINCE " + DateTime.Now.AddHours(-hours).ToString("dd-MMM-yyyy"));

    foreach (Message newMessage in messages)
    {
        inbox.DeleteMessage(newMessage.IndexOnServer, true);
    }
Run Code Online (Sandbox Code Playgroud)

如何获取正确的邮件索引以便删除?


编辑:

使用标准的基于1的循环的建议的问题是计数器索引将不与消息索引同步,因为在我的情况下,我正在搜索仅检索特定的消息子集(据我所知) .

谢谢.

c# imap

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

Task.ContinueWith执行顺序

显然,我不了解如何使用ContinueWith方法.我的目标是执行任务,完成后返回一条消息.

这是我的代码:

    public string UploadFile()
    {
        if (Request.Content.IsMimeMultipartContent())
        {
            //Save file
            MultipartFormDataStreamProvider provider = new MultipartFormDataStreamProvider(HttpContext.Current.Server.MapPath("~/Files"));
            Task<IEnumerable<HttpContent>> task = Request.Content.ReadAsMultipartAsync(provider);

            string filename = "Not set";

            task.ContinueWith(o =>
            {
                //File name
                filename = provider.BodyPartFileNames.First().Value;
            }, TaskScheduler.FromCurrentSynchronizationContext()); 

            return filename;
        }
        else
        {
            return "Invalid.";
        }
    }
Run Code Online (Sandbox Code Playgroud)

变量"filename"始终返回"Not set".似乎从未调用ContinueWith方法中的代码.(如果我在VS中逐行调试它会被调用.)

在我的ASP.NET Web API控制器/ Ajax POST中调用此方法.

我在这做错了什么?

c# task asp.net-web-api

5
推荐指数
1
解决办法
5761
查看次数

连接已重置ASP.NET

我有一些代码从SQL DB中提取数据,然后循环遍历记录以生成一个字符串,最终将其写入文本文件.

代码在我的本地运行正常,从VS,但在实时服务器上,大约一分半钟后,我得到"没有数据接收"错误(铬).代码在循环访问DataTable的过程中停止.托管支持说"连接被重置"错误被抛出.

我不确定这是否是超时问题或者是什么.我已经在我的web.config中设置了executionTimeout(使用debug = false)并且它似乎没有帮助.我还检查了Server.ScriptTimeout属性,并且它确实匹配web.config中设置的executionTimeout值.此外,超时通常会给出"页面不可用"消息.

任何建议表示赞赏.

c# asp.net timeout

5
推荐指数
2
解决办法
7712
查看次数