我有一个问题,其中.doc和.pdf文件出来正常但.docx文件出现损坏.
为了解决这个问题,我试图调试为什么.docx已损坏.
我了解到docx格式在额外字符方面比.pdf或.doc更严格.因此,我搜索了docx文件中的各种xml文件,查找无效的XML.但我找不到任何东西.这一切都很好.

有人可以建议我现在去调查吗?
更新:
文件夹中文件的完整列表如下:
/_rels
.rels
/customXml
/_rels
.rels
item1.xml
itemProps1.xml
/docProps
app.xml
core.xml
/word
/_rels
document.xml.rels
/media
image1.jpeg
/theme
theme1.xml
document.xml
fontTable.xml
numbering.xml
settings.xml
styles.xml
stylesWithEffects.xml
webSettings.xml
[Content_Types].xml
Run Code Online (Sandbox Code Playgroud)
更新2:
我还应该提到腐败的原因几乎肯定是代表我的一个糟糕的二进制文件POST.
为什么docx文件被二进制文件损坏,但.doc和.pdf都没问题?
更新3:
我已经尝试了各种docx修复工具的演示.他们似乎都修复了文件,但没有提供错误原因的线索.
我的下一步是使用修复版本检查损坏文件的内容.
如果有人知道docx修复工具提供了一个体面的错误消息,我会很感激听到它.事实上,我可能会将其作为一个单独的问题发布.
更新4(2017)
我从未解决过这个问题.我已经尝试了下面答案中建议的所有工具,但它们都不适用于我.
自从0000Sublime Text打开.docx后,我已经进一步发展并找到了一个缺失块.这里新问题的更多细节:httpwebrequest期间.docx文件中可能导致这种损坏的原因是什么?
我认为这将(相对)容易,但从答案来看,它似乎比我预期的更难.
也许甚至不可能!
目标
我想要一个可以任意分配a .left或.rightclass 的div元素列表.
所有的.leftdiv应该在左侧.right堆叠在彼此之下,div应该在右侧堆叠在彼此之下.每个类中的div数是任意的.

三个条件
每个div的高度不会提前知道
我希望它们在指定的一侧相互堆叠,无论有多少div,它们出现的顺序,以及分配给任何一方的数量.
有些人建议,我不想使用'包装'div.这是因为解决方案必须满足随机数量.left和.rightdiv的排序
(参见下面的示例).
理想情况下,我希望它是一个纯粹的html/css解决方案,尽可能向后兼容 - 尽管我意识到这可能是不切实际的.
示例HTML
<div class="left">left one</div>
<div class="left">left two</div>
<div class="right">right one</div>
<div class="left">left three</div>
<div class="right">right two</div>
<div class="right">right three</div>
<div class="left">left four</div>
<div class="right">right four</div>
<div class="right">right five</div>
<div class="left">left five</div>
<div class="right">right six</div>
<div class="right">right seven</div>
Run Code Online (Sandbox Code Playgroud)
UPDATE
经过这么多答案后,我对答案/技巧的范围印象深刻,但没有一个能完全符合所有条件.
因此,我试图找到一个可靠的解决方案,我只有四分之一的声誉!
更新2
我的原始目标似乎是可以撤销的.因此,我没有给出任何答案,尽管我已经把它给了Josh,但是给了我(几乎)实现这一目标的最佳方式,以及他使用的css的大量解释.
感谢大家的帮助和想法.
摘要:
我想要一个数据注释验证器来引用同一个类中的另一个属性(TitleAuthorAndPublishingConfiguration).
但是,不直接在此类上调用DB.SaveChanges().而是在这个类(WebsiteConfiguration)的父级上调用它.
因此validationContext.ObjectType返回WebsiteConfiguration,我无法引用TitleAuthorAndPublishingConfiguration数据注释验证器中的属性.
WebsiteConfiguration.cs
public class WebsiteConfiguration
{
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int ID { get; set; }
public TitleAuthorAndPublishingConfiguration TitleAuthorAndPublishing { get; set; }
public BookChaptersAndSectionsConfiguration BookChaptersAndSections { get; set; }
public SocialMediaLoginsConfiguration SocialMediaLogins { get; set; }
public TagGroupsConfiguration TagGroups { get; set; }
}
public class TitleAuthorAndPublishingConfiguration
{
public string BookTitle { get; set; }
public bool IsPublished { get; set; }
// how do I access …Run Code Online (Sandbox Code Playgroud) 我试图根据不同的标准缓存导航菜单的各个部分.
例如,新闻和文章需要在持续时间内刷新,而登录和配置文件应该基于每个用户进行缓存.
我正在考虑两种选择 - 是否有人能够对我们各自的利弊有所启发?如果可能的话,建议采取更好的方法!
选项1.
只需将所有必需的html缓存为数据缓存中的字符串.必要时手动检查用户差异.
我(也许是错误的)想象这将是最需要实现的工作,但也是缓存不同部分的最有效方式.
选项2.
为菜单的每个部分安装一个具有不同子操作的NavigationController.(我们可以根据需要对每个子操作应用不同的outputCacheProfile.)
但这需要我们为导航菜单的每个部分调用单独的RenderAction.由于对Phil Haack的一篇博文发表评论,我对此感到担心:
[渲染操作]非常类似于发出另一个请求,因为我们需要运行路由以确保我们有适当的路由数据和上下文来调用操作方法.所以每次调用RenderAction都会加起来.
完整帖子在这里:http://haacked.com/archive/2009/11/18/aspnetmvc2-render-action.aspx
想要实现基于通用仓库由克里斯·普拉特的文章使用object的Id(PK).
一切都很好,直到我.Map()用ExpressMapper尝试其中一个对象.
更多代码如下.但基本上,当我尝试这样做时:
var dataModel = postedModel.Map(new ExampleDataModel());
Run Code Online (Sandbox Code Playgroud)
它给了我:
没有为此对象定义的无参数构造函数.
当我将Id属性更改ExampleDataModel为a string或int它工作正常.
我用Google搜索了一下.我没有看到任何明显的东西,但我有点超出我的深度.我想知道:
是什么造成的?
我能以某种方式解决这个问题吗?
如果可能的话,我想继续使用对象PK和ExpressMapper,因为它们都适合我的项目.
public interface IDataModel
{
object Id { get; }
}
public interface IDataModel<PKT> : IDataModel
{
new PKT Id { get; set; }
}
public abstract class DataModel<PKT> : IDataModel<PKT>
{
public PKT Id { get; set; }
object IDataModel.Id
{
get { return this.Id; }
} …Run Code Online (Sandbox Code Playgroud) 我已经在一个MVC 5代码第一个项目上工作了几个月而且(貌似)无处不在,Visual Studio拒绝调试并给我一些奇怪的错误.
当我尝试运行应用程序Ctrl+ F5它构建正常但浏览器永远不会超出加载阶段,我仍然在浏览器选项卡中有风车,但应用程序永远不会加载.
当我尝试调试应用程序了F5它建立正常,但随后2个错误,首先出现Debugging information for iisexpress.exe cannot be found or does not match. Cannot find or open the PDB file.,然后Process with an Id of xxxx is not running.
我已经尝试从MS(/sf/answers/569696291/)加载符号,使用不同的数据库名称,卸载VS扩展,执行所有Windows更新,修复VS安装,甚至完全重新安装VS. 似乎没有任何帮助.
我对PDB文件不太熟悉,但我没有明白改变这一点,他们似乎在正确的地方:

我的想法已经不多了,但是如果可能的话,我真的想避免重新安装Windows.
它只发生在这个项目中,因此问题似乎与项目本身有关,而不是安装.但我不知道从哪里开始调试此问题,或寻找解决方案.
可能是相关的
我尝试在自定义域上运行应用程序(在hosts文件和IIS Express的ApplicationHosts.config文件中设置).为了解决这个问题,我将这些设置恢复为默认值localhost:[port].这似乎没有任何区别,但我认为我应该提一下以防万一.
我似乎无法从MiniProfiler获得任何结果。
我可以看到 XHR POST 返回/mini-profiler-resources/results404。chrome 请求检查器为我提供了一个标准服务器 404 页面。
对同一 URL 的 GET 也会返回 404,但有一条消息说“没有找到指定 id 的结果”(我确实在查询字符串中添加了 id)。
当我查看/mini-profiler-resources/results-index它时,它只是给了我一个空表,其中包含字段标题 - 名称、开始、sql、持续时间等。
我已经尝试了一些事情 - 详细信息如下 - 在这个阶段我不知道下一步可以尝试什么。任何调试此问题的指针或建议将不胜感激。
MVC4 也适用于 MVC5。这个项目就是哪个。
protected void Application_Start()
{
MiniProfilerEF6.Initialize();
MiniProfiler.Settings.Results_List_Authorize = IsUserAllowedToSeeMiniProfilerUI;
MiniProfiler.Settings.MaxJsonResponseSize = int.MaxValue;
Database.SetInitializer<ApplicationDbContext>(null);
GlobalFilters.Filters.Add(new ProfilingActionFilter());
var copy = ViewEngines.Engines.ToList();
ViewEngines.Engines.Clear();
foreach (var item in copy)
{
ViewEngines.Engines.Add(new ProfilingViewEngine(item));
}
}
protected void Application_BeginRequest(Object source, EventArgs e)
{
if (Request.IsLocal) …Run Code Online (Sandbox Code Playgroud) 我使用Redactor作为HTML编辑器,它有一个用于上传图像和文件的组件.
Redactor负责客户端位,我需要提供服务器端上传功能.
如果我Request.Files在控制器中使用,我没有问题让上传工作.
但我想将发布的文件绑定到模型,我似乎无法做到这一点,因为它们发送的参数是files[]- 名称中带有方括号.
我的问题:
是否可以将发布绑定"file[]"到MVC模型?这是一个无效的属性名称,file单独使用不起作用.
此文件输入如下所示.我可以指定一个名称以外的名称file,但Redactor添加[]到最后,无论名称如何.
<input type="file" name="file" multiple="multiple" style="display: none;">
Run Code Online (Sandbox Code Playgroud)
我试图绑定到这样的属性:
public HttpPostedFileBase[] File { get; set; }
Run Code Online (Sandbox Code Playgroud)
当我看到上传发生时,我在请求中看到了这一点(我认为redactor可能会在幕后添加方括号):
Content-Disposition: form-data; name="file[]"; filename="my-image.jpg"
Run Code Online (Sandbox Code Playgroud)
也相关:
Redactor始终将内容类型的上传请求作为multipart/form-data发送.所以你不需要在任何地方添加这个enctype
这似乎意味着相反,因为它是非'-o'图标版本的反转版本.
但这对我来说似乎不是正确的答案.
这个决定背后有一个明显的模式,因为许多图标遵循相同的模式.但'-o'后缀是什么意思?

我正在玩剃刀视图引擎,而且还有一些我不太了解的东西.
_ViewStart文件指定具有完整文件路径的布局,如下所示:
@{
Layout = "~/Views/Shared/_MasterLayout.cshtml";
}
Run Code Online (Sandbox Code Playgroud)
据我了解,必须包括完整的路径和扩展.你不能这样做:
@{
Layout = "_MasterLayout";
}
Run Code Online (Sandbox Code Playgroud)
但是,视图引擎指定搜索主视图的位置:
MasterLocationFormats = new string[] {
"~/Views/{1}/{0}.cshtml",
"~/Views/Shared/{0}.cshtml"
};
Run Code Online (Sandbox Code Playgroud)
为什么_ViewStart文件中需要完整的主布局文件路径?
如果指定了完整路径,那么指定可能位置的重点是MasterLocationFormats[]什么?
更新
好吧,我还没有找到一个满意的答案.
从实验中可以看出,在viewstart文件中指定Layout时,MasterLocationFormats要么被插入要么被覆盖.
我可以从MasterLocationFormats中完全删除MasterLayout.cshtml位置,它对网页的显示没有任何影响.
我的个人问题是由于使用了MvcMailer软件包,它允许您指定剃刀视图以用作发送HTML电子邮件的模板.这个DOES使用MasterLocationFormats.
所以我还是有点困惑,但希望这将是一些使用到任何人来到这里.此外,这篇文章也可能有所帮助.
asp.net-mvc ×7
asp.net ×1
caching ×1
corrupt ×1
css ×1
dbcontext ×1
debugging ×1
docx ×1
file-upload ×1
font-awesome ×1
generics ×1
html ×1
pdb-files ×1
primary-key ×1
razor ×1
redactor ×1
viewengine ×1
xml ×1