我正在配置一个MVC 3项目来处理IIS的本地安装,并遇到以下500错误:
处理程序"PageHandlerFactory-Integrated"在其模块列表中有一个错误的模块"ManagedPipelineHandler".
事实证明,这是因为即使我在"添加功能"对话框中选中了该框,ASP.Net也没有完全安装IIS.为了解决这个问题,我只需在命令提示符下运行以下命令
%windir%\Microsoft.NET\Framework64\v4.0.30319\aspnet_regiis.exe -i
Run Code Online (Sandbox Code Playgroud)
如果我使用32位系统,它将如下所示:
%windir%\Microsoft.NET\Framework\v4.0.21006\aspnet_regiis.exe -i
Run Code Online (Sandbox Code Playgroud)
我的问题是,有没有办法在Windows 7机器上安装IIS以使用.NET 4.0(MVC 3)而无需采取额外步骤?
编辑2:
确认我的性能问题是由于对StringExtensions类的静态函数调用造成的.一旦删除,IndexOf方法确实是实现此目的的最快方法.
查看字符串是否包含C#中的另一个字符串的最快,不区分大小写的方法是什么?我在这里看到了Case不敏感的'Contains(string)'这个帖子的公认解决方案,但是我已经做了一些初步的基准测试,看起来使用该方法会导致在测试时对较大的字符串(> 100个字符)调用较慢的数量级无法找到字符串.
以下是我所知道的方法:
指数:
public static bool Contains(this string source, string toCheck, StringComparison comp)
{
if (string.IsNullOrEmpty(toCheck) || string.IsNullOrEmpty(source))
return false;
return source.IndexOf(toCheck, comp) >= 0;
}
Run Code Online (Sandbox Code Playgroud)
ToUpper的:
source.ToUpper().Contains(toCheck.ToUpper());
Run Code Online (Sandbox Code Playgroud)
正则表达式:
bool contains = Regex.Match("StRiNG to search", "string", RegexOptions.IgnoreCase).Success;
Run Code Online (Sandbox Code Playgroud)
所以我的问题是,这实际上是平均最快的方式,为什么呢?
编辑:
这是我用来突出性能差异的简单测试应用程序.使用它,我看到ToLower()为16 ms,ToUpper为18 ms,StringExtensions.Contains()为140 ms:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Globalization;
namespace ScratchConsole
{
class Program
{
static void Main(string[] args)
{
string input = "";
while (input != "exit")
{
RunTest();
input …
Run Code Online (Sandbox Code Playgroud)