我正在使用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) 在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 Server标识字段(int)的最大大小是多少?
我在一些表格中每天删除和插入一些记录,我很好奇这会对自动识别字段产生什么影响.
如果需要,我每晚都可以运行一份工作并截断这些数据.
我很感激你的想法.
谢谢.
如何直接从代码隐藏调用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.
处理需要很长时间才能执行的流程的推荐方法是什么?我不想简单地在服务器上运行它,因为页面会超时.
我浏览了网页,发现了多种方法--AJAX,线程,Web服务......(我没有经验)
处理这个问题的最佳实践方法是什么?
谢谢.
我正在将数据加载到文本文件中,当过程需要很长时间(大量数据)时,我得到504响应(在Fiddler中查看),显然文件无法生成.我以为我会尝试在web.config中增加会话超时,但这没有帮助.
是否有一些属性可以确定超时?
感谢任何帮助.
仅当同一行上没有特定字符之前,我如何匹配模式?
我有以下正则表达式代码:
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 个斜杠之前的任何位置时才匹配?
希望我的问题现在清楚了。
我正在使用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的循环的建议的问题是计数器索引将不与消息索引同步,因为在我的情况下,我正在搜索仅检索特定的消息子集(据我所知) .
谢谢.
显然,我不了解如何使用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中调用此方法.
我在这做错了什么?
我有一些代码从SQL DB中提取数据,然后循环遍历记录以生成一个字符串,最终将其写入文本文件.
代码在我的本地运行正常,从VS,但在实时服务器上,大约一分半钟后,我得到"没有数据接收"错误(铬).代码在循环访问DataTable的过程中停止.托管支持说"连接被重置"错误被抛出.
我不确定这是否是超时问题或者是什么.我已经在我的web.config中设置了executionTimeout(使用debug = false)并且它似乎没有帮助.我还检查了Server.ScriptTimeout属性,并且它确实匹配web.config中设置的executionTimeout值.此外,超时通常会给出"页面不可用"消息.
任何建议表示赞赏.