小编gb2*_*b2d的帖子

WebClient.DownloadString()返回具有特殊字符的字符串

我有一些问题,我们正在从网上下载我正在构建的屏幕抓取工具.

在下面的代码中,从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)

.net c# asp.net character-encoding special-characters

62
推荐指数
3
解决办法
6万
查看次数

Excel数字格式字符串(例如"@","$ -409] d-mmm-yy; @") - 完整的参考可用性?

我正在使用Spreadsheet Gear进行一些Excel编程.我想要更多地控制数字格式,看来我需要使用该NumberFormat属性来实现这一点.

我已经看到过你可以使用" @"来指定字符串的建议,但是找不到完整的参考资料.

我猜它是特定于Excel的,而不是Spreadsheet Gear特有的.

任何人都可以帮我找到一个完整的参考,或至少一个像样的清单?

excel spreadsheetgear number-formatting

19
推荐指数
1
解决办法
3万
查看次数

尽管在响应对象上配置了高速缓存控制标头,但它们仍未响应

我正在尝试在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)

c# http-caching asp.net-web-api

17
推荐指数
2
解决办法
5679
查看次数

是否可以在不丢失用户会话的情况下回收IIS应用程序池?

我们目前正在部署代码以便非常规范地生活,但是缺点是破坏了用户会话数据.

有没有办法在不丢失会话数据的情况下回收IIS,或者在SQL服务器中持久化会话状态或类似方式?

asp.net iis

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

如何使用XmlWriter.Create(...?)实例化抽象类XmlWriter?

只是想澄清一下我对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)

经过测试,这显然有效.任何人都可以帮助我了解这里发生了什么.据我所知,这里有或者应该没有"实例"吗?

.net c#

12
推荐指数
1
解决办法
3102
查看次数

NHibernate - 如何映射到没有表的类(用于自定义sql查询)

更新 - 在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" …

.net nhibernate fluent-nhibernate

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

数据库Upserts - 好或坏的做法?

寻找关于Upsert(插入或是否存在,然后更新)过程在数据库编程中是否被视为不良实践的一些见解.如果有任何相关性,我在SQL服务器上工作.

在几个月前我工作过的地方,常驻数据库大师在新编写的数据库编码标准(我同意其中大部分)中都说过,应该避免使用Upserts.

我无法真正看到这个的逻辑原因,并认为我自己合理地意识到良好的编程实践.我认为它们对于直接数据管理很有用,并有助于避免过多的存储过程编号.

寻找一些有助于我得出结论的见解/讨论.

谢谢.

更新回复评论:

我所指的具体上下文是在数据库中创建或更新域实体数据表示.比如说,"Person"对象作为数据库中"Person"表的表示存在.我只需要一种机制来创建一个新的Person,或者更新一个现有的Person.在这里,我可以选择创建Upsert存储过程,或者两个单独的存储过程 - 一个用于Update,一个用于Insert.

任何人看来有什么优点或缺点?

mysql sql-server oracle database-design

11
推荐指数
2
解决办法
2452
查看次数

如何匹配子串的多次出现

如果我有一个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" />

我需要灵活地匹配多个标签/数字部分,同时修剪前导或尾随字符串中第一个/最后一个数字的任何内容.

regex

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

ILMerge生成的程序集不会运行,虽然日志输出报告没有错误 - 为什么会这样?

我正在测试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)

.net ilmerge

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

Ajax文件上传,'进度'上传事件不会在Edge浏览器中激活

我正在开发一个文件上传控件,通过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)

html javascript ajax

10
推荐指数
1
解决办法
3441
查看次数