小编Sco*_*ttE的帖子

.net:添加字典项 - 检查它是否存在或允许异常?

我正在向StringDictionary添加项目,并且可能会出现重复的密钥.这当然会抛出异常.

如果重复的可能性非常低(即很少发生),我最好使用Try Catch块并使其处理不当,或者在添加每个条目之前是否应该总是进行.ContainsKey检查?

我假设如果重复密钥的可能性很高,那么允许异常将是一个糟糕的决定,因为它们很昂贵.

思考?

编辑

我在泛型字典中使用了反射器,并为ContainsKey和TryGetValue找到了以下内容,因为两者都在下面提到.

public bool TryGetValue(TKey key, out TValue value)
{
    int index = this.FindEntry(key);
    if (index >= 0)
    {
        value = this.entries[index].value;
        return true;
    }
    value = default(TValue);
    return false;
}
Run Code Online (Sandbox Code Playgroud)

public bool ContainsKey(TKey key)
{
    return (this.FindEntry(key) >= 0);
}
Run Code Online (Sandbox Code Playgroud)

我错过了什么,或者TryGetValue比ContainsKey做更多的工作?


我很欣赏这些回复,对于我目前的目的,我将继续做一个ContainsKey调用,因为集合很小,而且代码更具可读性.

.net dictionary

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

.net web服务:无法添加服务引用,仅限web引用

我有一个使用Web服务的现有项目.一个是作为服务引用添加的,另一个是作为Web引用添加的.我不记得为什么一个被添加为网络参考,但也许是因为我无法让它工作!

一个Web服务的现有服务引用工作正常,因此它不是.net版本问题.

我可以成功为第二个Web服务创建服务引用,但没有一个方法可用..wsdl显示模式,但Reference.vb仅显示命名空间,而不显示任何方法.

为了澄清,这些是两个不同的第三方Web服务提供商.

我们希望转到服务参考,以便我们可以更好地控制配置,因为我们遇到了各种超时问题.

有没有人遇到过这个?

编辑

地址上有两项服务是否重要?

编辑

我正在使用.net 3.5和VS2008.

alt text http://img139.imageshack.us/img139/719/addservicereference.gif

.net web-services

13
推荐指数
1
解决办法
9862
查看次数

是否有人使用Sencha Touch进行移动开发?

我们正在评估Sencha Touch的移动开发.有没有人用过这个(我意识到它还处于测试阶段),如果有的话,它的优点/缺点是什么?它与替代品相比如何?

这当然听起来很引人注目.

谢谢!

iphone android extjs sencha-touch

11
推荐指数
1
解决办法
2802
查看次数

谷歌地图v3折线工具提示

谷歌地图标记对象(google.maps.Marker)具有title属性,因此当用户将鼠标移到标记上时,会显示一个简单的工具提示.

折线上没有title属性(google.maps.Polyline).有没有办法可以做到这一点/在V3中模拟这个?我可以在V2中做到这一点,我找不到V3的例子.

javascript google-maps google-maps-api-3

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

Excel xml电子表格 - 是否可以嵌入图像?

我正在尝试将数据从Web应用程序导出到excel,但是有一个请求要在电子表格的顶部包含公司的徽标.我创建excel的常规方法是在excel中创建一个电子表格并将其另存为Xml电子表格(Excel 2003).这允许我在代码中构建xml.

但是,当试图将excel工作表保存为xml工作表时,我会收到警告,图像将丢失.

那么,是否可以从我的应用程序中嵌入图像?我试过base64,但那没用.

<Data ss:Type="Base64">base64string here...</Data> 无效

Html也没有被解释.这可能吗?

Excel 2003 +是目标.

.net xml excel

8
推荐指数
1
解决办法
6725
查看次数

Server.TransferRequest()和http状态代码

我必须实现一个自定义的HttpModule来处理Sharepoint中的404错误.

它侦听PreSendRequestContent事件,并查找404状态代码.如果找到一个,它会执行TransferRequest.

void App_PreSendRequestContent(object sender, EventArgs e)
{
    HttpResponse res = App.Response;
    HttpRequest req = App.Request;

    if (res.StatusCode == 404 && !req.Url.AbsolutePath.Equals(PageNotFoundUrl, StringComparison.InvariantCultureIgnoreCase))
    {
        App.Server.TransferRequest(PageNotFoundUrl);
    }
}
Run Code Online (Sandbox Code Playgroud)

这工作得很好,但我注意到在Fiddler中该页面显示了200状态代码,即使原始请求是404.这对搜索引擎也不好.

这是TransferRequest的预期行为吗?我可以以某种方式维护404状态代码吗?或者,我是否会更好地使用旧的老式Server.Transfer?

更新

我在sharepoint环境之外尝试了这个,并且Server.TransferRequest请求确实提供了200状态代码,删除了404.Server.Transfer不起作用,因为我不认为它可以给出管道.

更新2

感谢下面的答案,我添加了以下内容:

void App_PostRequestHandlerExecute(object sender, EventArgs e)
{
    HttpResponse res = App.Response;
    HttpRequest req = App.Request;

    if (req.Url.AbsolutePath.Equals(PageNotFoundUrl, StringComparison.InvariantCultureIgnoreCase))
    {
        res.StatusCode = 404;
    }
}
Run Code Online (Sandbox Code Playgroud)

c# asp.net sharepoint httpmodule

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

.net Web应用程序项目中的自定义控件

我有一些自定义控件作为服务器控件项目创建.我做了一些更改,所以我只是将类添加到现有的Web应用程序项目中,这样我就可以在一个地方进行操作.此Web应用程序项目编译为一个用于多个Web项目的DLL.

当我构建Web应用程序项目并将dll放在不同网站的bin中时,当我使用该控件时,我收到以下错误:

未知的服务器标签'CustomControls:RadioButtonListForGrid'

如果我将自定义控件类添加到我的网站的app_code文件夹,它工作正常.我使用了对象浏览器并确认这些类在dll中.

我错过了一些明显的东西吗?我是否必须将这些作为服务器控制项目保留并使用ILmerge组合dll?

编辑

事实证明我需要添加程序集名称.事实证明,组件没有被命名为我认为的那样.我猜我应该检查一下.哎呀.

asp.net custom-controls

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

Flickr api与Picasa api

我正在构建一个用户可以上传图片的应用程序.我需要的只是让用户上传初始照片,并管理kml的标题,描述,标签和空间数据.上传视频的能力会很棒.

这些图片将用作自定义谷歌地图应用程序的一部分.

只要满足上述要求,我对apis与哪种服务更好的有效性更感兴趣.

我已经读过Flickr api很棒,但是我正在寻找那些与两个apis合作的人的第一手信息.

另一种选择当然是在应用程序内管理这些数据.

我正在使用.net和jquery.

谢谢!

api picasa flickr

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

IIS 7模拟和身份

我正在尝试习惯II7,与IIS6合作已有一段时间了.

在IIS 6中,我设置<identity impersonate="true"/>了web.config,并确保我将正确的NTFS权限应用于IUSR_ [MACHINENAME]帐户,如果文件夹需要超过读取权限.

在IIS 7中,我无法复制此设置而无需申请太多权限.

如果我<identity impersonate="true"/>在IIS 7中使用,Environment.Username告诉我,我确实冒充IUSR帐户,这是新的等价物.但是,如果我使用表单身份验证登录网站的管理部分,则会以不同于我期望的方式进行模拟.

在应用程序池中设置NetworkService:

  • 没有登录:IUSR,没有模仿:[MACHINENAME] $
  • 登录:[MACHINENAME] $,而非模仿:[MACHINENAME] $

在应用程序池中设置LocalService:

  • 未登录:IUSR,不模仿:本地服务
  • 登录:LOCAL SERVICE,而非模仿:LOCAL SERVICE

如果我给IIS_IUSRS帐户NTFS权限我可以使事情正常,但这似乎很奇怪.我怎么能一直冒充IUSR账户?或者,我是否应该将IISFS权限授予IIS_IUSRS?

我很欣赏IIS7中这一变化的一个很好的解释 - 我已经搜索过,无法通过表单身份验证找到这种用法的解释.

.net impersonation iis-7

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

为什么要设置命令对象参数的size参数呢?

我们的数据访问层使用命令对象与sql server通信.

在大多数情况下,我已将字段大小(与sql server中的列大小相匹配)硬编码到命令参数构建器中.

如:

SqlParameter param = new SqlParameter("@name", NVarChar, 4000);
Run Code Online (Sandbox Code Playgroud)

在这里指定一个值(在这个例子中为4000)而不是将其保留为0有什么好处?当列大小更改时必须重新编译时会很痛苦.

c# sql-server ado.net

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