小编Wil*_*son的帖子

无法加载文件或程序集"msshrtmi"或其依赖项之一(Azure表存储访问)

我有一个HTTPModule,用于重定向数据中心的网站和Azure平台上运行的网站之间的流量.此HTTPModule从Azure表存储中检索其重定向规则.

重定向在我的本地开发计算机上以及在Azure上运行时都能正常工作.但是,当我将模块部署到我的数据中心服务器(IIS 7,WS 2008 R2标准64位,.NET 4.0,ASP.NET 4.0)时,我收到以下错误

Parser Error Message: Could not load file or assembly 'msshrtmi' or one of its dependencies. An attempt was made to load a program with an incorrect format.
Line 124:                <add assembly="System.Web.DynamicData, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
Line 125:                <add assembly="System.Web.ApplicationServices, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" />
Line 126:                <add assembly="*" />
Line 127:            </assemblies>
Line 128:            <buildProviders>

Source File: C:\Windows\Microsoft.NET\Framework\v4.0.30319\Config\web.config    Line: 126 
Run Code Online (Sandbox Code Playgroud)

"msshrtmi.dll"实际存在于我的部署bin目录中.

如果我删除此dll数据中心站点工作正常,但HTTPModule无法从表存储加载其配置数据,而是抛出以下错误

---> System.TypeInitializationException: The type initializer for 'Microsoft.WindowsAzure.ServiceRuntime.RoleEnvironment' threw an exception. ---> System.IO.FileNotFoundException: Could …
Run Code Online (Sandbox Code Playgroud)

.net c# httpmodule azure azure-storage

49
推荐指数
3
解决办法
4万
查看次数

SQL Server进程队列竞争条件

我有一个订单队列,由多个订单处理器通过存储过程访问.每个处理器都传入一个唯一的ID,用于锁定接下来的20个订单供自己使用.然后,存储过程将这些记录返回给订单处理器以进行操作.

在某些情况下,多个处理器能够检索相同的"OrderTable"记录,此时它们会尝试同时对其进行操作.这最终导致在该过程的后期抛出错误.

我的下一步行动是允许每个处理器获取所有可用的订单并且只是循环处理器,但我希望简单地使这部分代码线程安全,并允许处理器随时抓取记录.

所以明确地 - 任何想法为什么我遇到这种竞争条件以及如何解决问题.

BEGIN TRAN
    UPDATE  OrderTable WITH ( ROWLOCK )
    SET     ProcessorID = @PROCID
    WHERE   OrderID IN ( SELECT TOP ( 20 )
                                        OrderID
                                FROM    OrderTable WITH ( ROWLOCK )
                                WHERE   ProcessorID = 0)
COMMIT TRAN


SELECT  OrderID, ProcessorID, etc...
FROM    OrderTable
WHERE   ProcessorID = @PROCID
Run Code Online (Sandbox Code Playgroud)

sql t-sql sql-server queue race-condition

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

查找和删除孤立的网页,图像和其他相关文件

我在许多网站上工作的文件可以追溯到2000年.这些网站随着时间的推移有机增长,导致大量孤立的网页,包括文件,图像,CSS文件,JavaScript文件等......这些孤立的文件导致一些问题包括可维护性差,可能存在安全漏洞,客户体验不佳以及像我这样疯狂地驾驶OCD/GTD怪胎.

这些文件数量为数千个,因此完全手动解决方案是不可行的.最终,清理过程需要相当大的质量保证工作,以确保我们不会无意中删除所需的文件,但我希望开发一种技术解决方案来帮助加快手动工作.此外,我希望将流程/实用程序放在适当的位置,以帮助防止将来发生这种混乱局面.

环境考虑因素:

  • 经典的ASP和.Net
  • 运行IIS 6和IIS 7的Windows服务器
  • 多种环境(Dev,Integration,QA,Stage,Prodction)
  • TFS用于源代码管理

在开始之前,我想从其他成功导航过类似过程的人那里得到一些反馈.

具体我正在寻找:

  • 识别和清理孤立文件的过程
  • 保护环境免受孤立文件干扰的过程
  • 帮助识别孤立文件的实用程序
  • 帮助识别断开链接的实用程序(一旦删除文件)

我不是在寻找:

  • 组织强迫症的解决方案......我喜欢我的样子.
  • Snide关于我们的评论仍然使用经典的ASP.我已经感受到了痛苦.没有必要擦它.

asp.net gtd vbscript asp-classic

14
推荐指数
1
解决办法
2713
查看次数

相同类型参数的协方差和逆变

C#规范声明参数类型不能同时具有协变性和逆变性.

这在创建协变或逆变接口时很明显,您可以分别使用"out"或"in"来修饰类型参数.没有选项允许同时("outin").

这种限制只是一种语言特定的约束,还是存在更深层次,更基本的理由,这种理由会使你不希望你的类型既有协变性又有逆变性?

编辑:

我的理解是阵列实际上既是协变的又是逆变的.

public class Pet{}
public class Cat : Pet{}
public class Siamese : Cat{}
Cat[] cats = new Cat[10];
Pet[] pets = new Pet[10];
Siamese[] siameseCats = new Siamese[10];

//Cat array is covariant
pets = cats; 
//Cat array is also contravariant since it accepts conversions from wider types
cats = siameseCats; 
Run Code Online (Sandbox Code Playgroud)

c# covariance contravariance variance

10
推荐指数
3
解决办法
2679
查看次数

ASP.Net Web API帮助页面返回空输出

我有一个预先存在的MVC应用程序,我使用Nuget添加了Web API和Web API自我文档.虽然Web API控制器运行正常(返回对HTTP请求的有效响应),但帮助控制器未找到任何要记录的Web API方法.

在帮助控制器索引操作"Configuration.Services.GetApiExplorer().ApiDescriptions"返回0结果.

我甚至从另一个功能正常的网络应用程序复制整个"HelpPage"区域.

填充ApiDescriptions的是什么,我需要设置任何配置设置以将我的API暴露给文档吗?


我尝试过的事情:

  • 重新安装nuget包
  • 从工作项目复制HelpPage区域
  • 从工作项目复制路线
  • 比较工作项目和破碎项目的参考
  • 将Global.asax.cs从工作项目与破坏的项目进行比较
  • 将web.config从工作项目与破坏的项目进行比较

documentation asp.net-mvc asp.net-mvc-4 asp.net-web-api

9
推荐指数
1
解决办法
2520
查看次数

配置管理器中缺少配置设置

我经常在我的解决方案的Configuration Manager中创建自定义构建配置.当我将先前创建的项目包含到解决方案中时,它们不会自动包含这些新配置.我发现使用适当的配置设置回填这些项目的唯一方法是手动编辑项目文件.

有没有办法强制解决方案中的所有项目都使用同一组Configuration Manager配置?

configurationmanager visual-studio

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

为什么不在finally块中关闭数据库连接

主要编辑: 我误读了这篇文章!评论是关于类的finalize方法而不是finally块:).道歉.

我刚刚读到你不应该在finally块中关闭或处理数据库连接,但文章没有解释原因.我似乎无法找到一个明确的解释,为什么你不想这样做.

这是文章

.net c# database sql-server

4
推荐指数
1
解决办法
6214
查看次数

从 Azure SAS URI 创建 BlobContainerClient

在 Microsoft.Azure.Storage.Blob 库中,您可以使用 SAS URI 创建 Blob 上传客户端。

var cloudBlockBlob = new CloudBlockBlob(blobSasUri);
Run Code Online (Sandbox Code Playgroud)

但是,该库已被弃用,取而代之的是 Azure.Storage.Blobs。我不确定如何使用 SAS URI 创建 BlobContainerClient 实例,因为该类的构造函数都不允许使用 URI 参数。这可能吗?或者我是否只需要使用 HttpClient 来调用 Blob 服务?

c# azure azure-blob-storage

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