我有一些问题,我们正在从网上下载我正在构建的屏幕抓取工具.
在下面的代码中,从Web客户端下载字符串方法返回的字符串为少数(不是所有)网站的源下载返回一些奇怪的字符.
我最近添加了http标头,如下所示.以前调用相同的代码而没有标题达到相同的效果.我没有尝试过'Accept-Charset'标题的变体,除了基础知识之外,我对文本编码知之甚少.
我引用的字符或字符序列是:
"  "
和
" Â "
在Web浏览器中使用"查看源"时,看不到这些字符.可能导致这种情况的原因是什么?如何纠正这个问题?
string urlData = String.Empty;
WebClient wc = new WebClient();
// Add headers to impersonate a web browser. Some web sites
// will not respond correctly without these headers
wc.Headers.Add("User-Agent", "Mozilla/5.0 (Windows; U; Windows NT 6.1; en-GB; rv:1.9.2.12) Gecko/20101026 Firefox/3.6.12");
wc.Headers.Add("Accept", "*/*");
wc.Headers.Add("Accept-Language", "en-gb,en;q=0.5");
wc.Headers.Add("Accept-Charset", "ISO-8859-1,utf-8;q=0.7,*;q=0.7");
urlData = wc.DownloadString(uri);
Run Code Online (Sandbox Code Playgroud) 我正在使用Spreadsheet Gear进行一些Excel编程.我想要更多地控制数字格式,看来我需要使用该NumberFormat
属性来实现这一点.
我已经看到过你可以使用" @
"来指定字符串的建议,但是找不到完整的参考资料.
我猜它是特定于Excel的,而不是Spreadsheet Gear特有的.
任何人都可以帮我找到一个完整的参考,或至少一个像样的清单?
我正在尝试在ASP.NET MVC Web API中设置缓存头,但IIS的响应表明正在忽略CacheControl值集.
我最初的假设是我在System.Web.Http.Cors中使用了EnableCorsAttribute,这在本用例中是必需的.但是,即使没有该属性,响应Cache-Control标头仍然是"私有".
我在这里做错了吗?
// GET api/<version>/content
// [EnableCors(origins: "*", headers: "*", methods: "*")]
public HttpResponseMessage Get(HttpRequestMessage request)
{
int cacheMaxAgeSeconds;
string cacheMaxAgeString = request.GetQueryString("cache-max-age") ?? request.GetQueryString("cache-max-age-seconds");
string rawUri = request.RequestUri.ToString();
try
{
cacheMaxAgeSeconds = cacheMaxAgeString == null ? Config.ApiCacheControlMaxSeconds : int.Parse(cacheMaxAgeString);
}
catch (Exception ex)
{
cacheMaxAgeSeconds = Config.ApiCacheControlMaxSeconds;
//...
}
try
{
//...
var response = new HttpResponseMessage(HttpStatusCode.OK)
{
Content = new StringContent("...", Encoding.UTF8, "application/json")
};
response.Headers.CacheControl = new CacheControlHeaderValue
{
Public = true,
MaxAge = …
Run Code Online (Sandbox Code Playgroud) 我们目前正在部署代码以便非常规范地生活,但是缺点是破坏了用户会话数据.
有没有办法在不丢失会话数据的情况下回收IIS,或者在SQL服务器中持久化会话状态或类似方式?
只是想澄清一下我对XmlWriter和抽象类的工作原理的理解.
我的想法是,虽然它可以包含可以由继承类使用的基本方法,但是不能实例化抽象类.
因此,在调查XmlWriter时,我发现要实例化XmlWriter,可以调用XmlWriter.Create(....,它返回一个...... XmlWriter的实例,然后可以使用它:
FileStream fs = new FileStream("XML.xml", FileMode.Create);
XmlWriter w = XmlWriter.Create(fs);
XmlSerializer xmlSlr = new XmlSerializer(typeof(TestClass));
xmlSlr.Serialize(fs, tsIn);
Run Code Online (Sandbox Code Playgroud)
经过测试,这显然有效.任何人都可以帮助我了解这里发生了什么.据我所知,这里有或者应该没有"实例"吗?
更新 - 在SO中编辑可读性的配置
嗨,
我一直在学习NHibernate一两天,但却陷入了困境.
我需要能够执行自定义存储过程并使用NHibernate将它们映射回域类.
我将此工作用于自定义查询映射回映射到数据库表的对象的场景,如许多nhibernate示例所示(请参阅下面的第一部分).
但是,在下面第二部分的配置中,查询仅从目标表中提取2列.出于这个原因,我创建了一个自定义对象,以便NHibernate可以将返回值映射到.自定义对象属性与自定义过程的返回列具有相同的名称.
当我运行我的测试时,我得到一个例外:
NHibernate.MappingException:没有持久性:Proj.DataEntityTracker.Domain.Entities.CustomObject
所以我认为sql-query部分下的映射不足以让NHibernate将返回值映射到对象属性.
所以我的问题是 - 如何设置一个映射,在该映射中数据库中没有等效表,以便我可以将存储过程的结果映射到该对象?
<?xml version="1.0" encoding="utf-8" ?> <hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" assembly="Proj.DataEntityTracker.Domain" namespace="Proj.DataEntityTracker.Domain.Entities"> <class name="TrackedEntityProperty" table="TrackedEntityProperties"> <id name="ID" type="Int32" unsaved-value="0"> <generator class="native"></generator> </id> <property name="TrackedEntityID" /> <property name="Name" /> <property name="CreatedDate" /> <property name="ChangedDate" /> <property name="DataType" /> <property name="CurrentValue" /> <property name="RequestPropertyValueQuestion" /> <property name="NullResponseIsAcceptable" /> <property name="Duplication" /> <property name="Frequency" /> <property name="IsActive" /> <property name="IsDeleted" /> <property name="LastUpdateTaskGenerated" /> <property name="LastUpdateTaskCompleted" /> <property name="LastUpdateTaskCancelled" /> </class> <sql-query name="usp_GetTrackedEntityPropertiesDueForUpdate" …
寻找关于Upsert(插入或是否存在,然后更新)过程在数据库编程中是否被视为不良实践的一些见解.如果有任何相关性,我在SQL服务器上工作.
在几个月前我工作过的地方,常驻数据库大师在新编写的数据库编码标准(我同意其中大部分)中都说过,应该避免使用Upserts.
我无法真正看到这个的逻辑原因,并认为我自己合理地意识到良好的编程实践.我认为它们对于直接数据管理很有用,并有助于避免过多的存储过程编号.
寻找一些有助于我得出结论的见解/讨论.
谢谢.
更新回复评论:
我所指的具体上下文是在数据库中创建或更新域实体数据表示.比如说,"Person"对象作为数据库中"Person"表的表示存在.我只需要一种机制来创建一个新的Person,或者更新一个现有的Person.在这里,我可以选择创建Upsert存储过程,或者两个单独的存储过程 - 一个用于Update,一个用于Insert.
任何人看来有什么优点或缺点?
如果我有一个HTML字符串,例如:
<div><p>£20<span class="abc" /><span class="def">56</span></p></div>
Run Code Online (Sandbox Code Playgroud)
我想要的文字:
20<span class="abc" /><span class="def">56
Run Code Online (Sandbox Code Playgroud)
如何定义正则表达式以多次匹配目标部分.到目前为止,我有:
str.match(/\d*<[^>]*>\d*/)
Run Code Online (Sandbox Code Playgroud)
但这只会返回第一个数字部分 20<span class="abc" />
我需要灵活地匹配多个标签/数字部分,同时修剪前导或尾随字符串中第一个/最后一个数字的任何内容.
我正在测试ILMerge的新项目,虽然.exe文件似乎是正确创建的,但它不会运行.
我已经通过.msi安装程序(在http://www.microsoft.com/download/en/confirmation.aspx?id=17630中找到)安装了ILMerge,并且正在使用批处理文件运行测试项目.下面是批处理文件,以及运行后的后续输出日志.所有日志中都显示正常,未报告错误.我正在为这个测试项目运行.NET framework 4.0.
当我尝试运行.exe时,它失败并带有标准的"此程序已停止工作".
我已经读过有些人在使用.NET 4时遇到了问题,但我认为我已经添加了正确的参数来处理这个问题.无论我是否添加.NET 4 args,我都得到相同的结果.
任何人都可以看到为什么这可能是?提前致谢.
批处理文件
REM Clear directory first
CD C:\WORKING\DIR\TestILMerge\TestILMerge\bin\Debug\CombinedDLL
DEL . /s/q
REM Change dir to iLMerge install (installed via msi installer)
REM Installer Download: http://www.microsoft.com/download/en/confirmation.aspx?id=17630
CD C:\Program Files (x86)\Microsoft\ILMerge\
REM Combine assemblies with logging
ilmerge.exe /lib:"C:\Windows\Microsoft.NET\Framework\v4.0.30319" /lib:"C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE\PublicAssemblies" /t:exe /log:C:\WORKING\DIR\TestILMerge\TestILMerge\bin\Debug\CombinedDLL\MergeLog.txt /target:winexe /targetplatform:v4,C:\Windows\Microsoft.NET\Framework\v4.0.30319 /out:C:\WORKING\DIR\TestILMerge\TestILMerge\bin\Debug\CombinedDLL\CombinedDLL.exe C:\WORKING\DIR\TestILMerge\TestILMerge\bin\Debug\TestILMerge.exe C:\WORKING\DIR\TestILMerge\TestDLL2\bin\Debug\TestDLL2.dll C:\WORKING\DIR\TestILMerge\TestDLL3\bin\Debug\TestDLL3.dll
Run Code Online (Sandbox Code Playgroud)
日志输出:
ILMerge version 2.11.1103.0
Copyright (C) Microsoft Corporation 2004-2006. All rights reserved.
ILMerge /lib:C:\Windows\Microsoft.NET\Framework\v4.0.30319 /lib:C:\Program Files (x86)\Microsoft Visual Studio …
Run Code Online (Sandbox Code Playgroud) 我正在开发一个文件上传控件,通过ajax发布表单数据.
我在Chrome,Firefox,IE 11,10中使用这个工作的跨浏览器.但是在Microsoft Edge浏览器中,上传'progress'事件似乎没有触发.
谁能指出原因并告诉我Edge是否有解决方法?
请参阅下面的JavaScript代码段和HTML.
JavaScript的:
...
uploadFile: function () {
var self = this;
var fileName = $('#file-input').val();
if (fileName) {
$('#file-upload-submit').attr('disabled', 'disabled');
// Browsers create a path with 'C:\fakepath in, which is not useful
// and needs to be stripped out
fileName = fileName.replace('C:\\fakepath\\', '');
var s3Key = self.s3KeyPrefix + self.createUuid() + '/' + fileName;
$('#s3-key').val(s3Key);
var fileExtension = self.getFileExtension(fileName);
var contentType;
if (fileExtension) {
// Find the content type by extension
for (var i = 0; …
Run Code Online (Sandbox Code Playgroud) .net ×4
c# ×3
asp.net ×2
ajax ×1
excel ×1
html ×1
http-caching ×1
iis ×1
ilmerge ×1
javascript ×1
mysql ×1
nhibernate ×1
oracle ×1
regex ×1
sql-server ×1