Asp.net 运行时错误: 未能如何设置映射路径径“/”,求解?

未能映射路径“/”
[问题点数:40分,结帖人China_fisher]
未能映射路径“/”
[问题点数:40分,结帖人China_fisher]
不显示删除回复
显示所有回复
显示星级回复
显示得分回复
只显示楼主
相关帖子推荐:
2009年5月 .NET技术大版内专家分月排行榜第三
2010年 总版技术专家分年内排行榜第一2009年 总版技术专家分年内排行榜第一
2011年 总版技术专家分年内排行榜第二
本帖子已过去太久远了,不再提供回复功能。正如ASP.NET MVC名字所揭示的一样,是以模型-视图-控制设计模式构建在ASP.NET基础之上的WEB应用程序,我们需要创建相应的程序类来协调处理,完成从客户端请求到结果相应的整个过程:
VS2012中一个典型的MVC工程结构是这样的:
Controllers文件夹下存放控制类,Models文件下是业务数据模型类,Views文件下则是类似于aspx的视图文件。在传统ASP.NET form的应用程序中,客户端的请求最后都映射到磁盘上对应路径的一个aspx的页面文件,而MVC程序中所有的网络请求映射到控制类的某一个方法,我们就从控制类说起,而在讲控制类前,必须要讲的是URL路由。
注册URL路由
我们在浏览器中请求链接&/Home/Index,MVC认为是这样的URL模式(默认路径映射):
{controller}/{action}
也就是说上面的请求会被映射到Home控制类的Index方法,MVC命名规则中控制类必须以Controller结尾,所以Home控制类应该是HomeController:&
public class HomeController : Controller
public ActionResult Index()
return View();
&MVC是根据什么将上面的请求映射到控制类的相应方法的呢?答案就是路由表,Global.asax在应用程序启动时会调用路由配置类来注册路径映射:
public class MvcApplication : System.Web.HttpApplication
protected void Application_Start()
AreaRegistration.RegisterAllAreas();
WebApiConfig.Register(GlobalConfiguration.Configuration);
FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
RouteConfig.RegisterRoutes(RouteTable.Routes);
BundleConfig.RegisterBundles(BundleTable.Bundles);
路径映射的配置类则在App_Start目录下:
public class RouteConfig
public static void RegisterRoutes(RouteCollection routes)
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
routes.MapRoute()添加了一个URL路由到路由表中,URL的映射模式是"{controller}/{action}/{id}",controller和action我们已经清楚,id则是请求中额外的参数,比如我们的请求可以是&/Home/Index/3,对应的action方法可以是:
public ActionResult Index(int id=1)
  return View();
在传递到Index方法时参数id会被赋值3(保存在RouteData.Values["id"]),MVC足够智能来解析参数并转化为需要的类型,MVC称之为模型绑定(后续具体来看)。上面注册路由时使用了默认参数:defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional },如果我们在请求URL没有指定某些参数,defaults参数会被用作默认值,比如:
< = /home/index
/home = mydomain/home/index
/customer = mydomain/customer/index
id为可选参数,可以不包括在URL请求中,所以上面注册的路径可以映射的URL有:
/home/list
/customer/list/4
除此之外不能映射的请求都会得到404错误,比如/customer/list/4/5,这里参数过多不能被映射。
RouteCollection.MapRoute()等同于:
Route myRoute = new Route("{controller}/{action}", new MvcRouteHandler());
routes.Add("MyRoute", myRoute);
这里直接向Routes表添加一个Route对象。
其他一些URL映射的例子:
routes.MapRoute("", "Public/{controller}/{action}",new { controller = "Home", action = "Index" }); //URL可以包含静态的部分,这里的public
routes.MapRoute("", "X{controller}/{action}"); //所有以X开头的控制器路径,比如/xhome/index映射到home控制器
routes.MapRoute("ShopSchema", "Shop/{action}",new { controller = "Home" }); //URL可以不包含控制器部分,使用这里的默认Home控制器
routes.MapRoute("ShopSchema2", "Shop/OldAction",new { controller = "Home", action = "Index" }); //URL可以是全静态的,这里/shop/oldaction传递到home控制器的index方法
一个比较特殊的例子:
routes.MapRoute("MyRoute", "{controller}/{action}/{id}/{*catchall}", new { controller = "Home", action = "Index", id = UrlParameter.Optional });
这可以映射任意多的URL分段,id后的所有内容都被赋值到cathall参数,比如/Customer/List/All/Delete/Perm,catchall = Delete/Perm。
需要注意的是路径表的注册是有先后顺序的,按照注册路径的先后顺序在搜索到匹配的映射后搜索将停止。
命名空间优先级
MVC根据{controller}在应用程序集中搜索同名控制类,如果在不同命名空间下有同名的控制类,MVC会给出多个同名控制类的异常,我们可以在注册路由的时候指定搜索的命令空间:
routes.MapRoute("MyRoute", "{controller}/{action}/{id}/{*catchall}",
new { controller = "Home", action = "Index", id = UrlParameter.Optional ,
new[] { "URLsAndRoutes.AdditionalControllers" });
这里表示我们将在"URLsAndRoutes.AdditionalControllers"命名空间搜索控制类,可以添加多个命名空间,比如:
routes.MapRoute("MyRoute", "{controller}/{action}/{id}/{*catchall}",
new { controller = "Home", action = "Index", id = UrlParameter.Optional },
new[] { "URLsAndRoutes.AdditionalControllers", "UrlsAndRoutes.Controllers"});
"URLsAndRoutes.AdditionalControllers", "UrlsAndRoutes.Controllers"两个命名空间是等同处理没有优先级的区分,如果这两个空间里有重名的控制类一样导致错误,这种情况可以分开注册多条映射:
routes.MapRoute("AddContollerRoute", "Home/{action}/{id}/{*catchall}",
new { controller = "Home", action = "Index", id = UrlParameter.Optional },
new[] { "URLsAndRoutes.AdditionalControllers" });
routes.MapRoute("MyRoute", "{controller}/{action}/{id}/{*catchall}",
new { controller = "Home", action = "Index", id = UrlParameter.Optional },
new[] { "URLsAndRoutes.Controllers" });
除了在注册路由映射时可以指定控制器搜索命名空间,还可以使用正则表达式限制路由的应用范围,比如:
routes.MapRoute("MyRoute", "{controller}/{action}/{id}/{*catchall}",
new { controller = "Home", action = "Index", id = UrlParameter.Optional },
new { controller = "^H.*", action = "^Index$|^About$", httpMethod = new HttpMethodConstraint("GET")},
new[] { "URLsAndRoutes.Controllers" });
这里限制MyRoute路由仅用于映射所有H开头的控制类、且action为Index或者About、且HTTP请求方法为GET的客户端请求。
如果标准的路由限制不能满足要求,可以从IRouteConstraint接口扩展自己的路由限制类:
public class UserAgentConstraint : IRouteConstraint {
private string requiredUserA
public UserAgentConstraint(string agentParam) {
requiredUserAgent = agentP
public bool Match(HttpContextBase httpContext, Route route, string parameterName,
RouteValueDictionary values, RouteDirection routeDirection) {
return httpContext.Request.UserAgent != null &&httpContext.Request.UserAgent.Contains(requiredUserAgent);
在注册路由时这样使用:
routes.MapRoute("ChromeRoute", "{*catchall}",
new { controller = "Home", action = "Index" },
new { customConstraint = new UserAgentConstraint("Chrome")},
new[] { "UrlsAndRoutes.AdditionalControllers" });
这表示我们限制路由仅为浏览器Agent为Chrome的请求时使用。
路由到磁盘文件
除了控制器方法,我们也需要返回一些静态内容比如HTML、图片、脚本到客户端,默认情况下路由系统优先检查是否有和请求路径一致的磁盘文件存在,如果有则不再从路由表中匹配路径。我们可以通过配置颠倒这个顺序:
public static void RegisterRoutes(RouteCollection routes) {
routes.RouteExistingFiles = true;
还需要修改web配置文件:
&add name="UrlRoutingModule-4.0" type="System.Web.Routing.UrlRoutingModule" preCondition=""/&
这里设置preCondition为空。如果我们再请求一些静态内容比如~/Content/StaticContent.html时会优先从路径表中匹配。
而如果我们又需要忽略某些路径的路由匹配,可以:
public static void RegisterRoutes(RouteCollection routes) {
routes.RouteExistingFiles = true;
routes.IgnoreRoute("Content/{filename}.html"); ...
它会在RouteCollection中添加一个route handler为StopRoutingHandler的路由对象,在匹配到content路径下的后缀为html的文件时停止继续搜索路径表,转而匹配磁盘文件。
生成对外路径
路径表注册不仅影响到来自于客户端的URL映射,也影响到我们在视图中使用HTML帮助函数生成对外路径,比如我们注册了这样的映射
public class RouteConfig {
public static void RegisterRoutes(RouteCollection routes) {
routes.MapRoute("MyRoute", "{controller}/{action}/{id}", new { controller = "Home", action = "Index", id = UrlParameter.Optional });
在视图中调用Html.ActionLink生成一个对外路径:
@Html.ActionLink("This is an outgoing URL", "CustomVariable")
根据我们当前的请求链接,http://localhost:5081/home,生成的outgoing链接为:&
&a href="/Home/CustomVariable"&This is an outgoing URL&/a&
而如果我们调整路径表为:
public static void RegisterRoutes(RouteCollection routes) {
routes.MapRoute("NewRoute", "App/Do{action}", new { controller = "Home" });
routes.MapRoute("MyRoute", "{controller}/{action}/{id}", new { controller = "Home", action = "Index", id = UrlParameter.Optional });
&@Html.ActionLink("This is an outgoing URL", "CustomVariable")&&得到的结果是:
&a href="/App/DoCustomVariable"&This is an outgoing URL&/a&
它将使用在路径表中找到的第一条匹配的记录来生成相应的链接路径。
Html.ActionLink()有多个重载,可以多中方式生成URL链接:
@Html.ActionLink("This targets another controller", "Index", "Admin") //生成到Admin控制器Index方法的链接
@Html.ActionLink("This is an outgoing URL",
"CustomVariable", new { id = "Hello" }) //生成额外参数的链接,比如上面的路径配置下结果为&href="/App/DoCustomVariable?id=Hello"&;如果路径映射为 "{controller}/{action}/{id}",结果为href="/Home/CustomVariable/Hello"
@Html.ActionLink("This is an outgoing URL", "Index", "Home", null, new {id = "myAnchorID", @class = "myCSSClass"}) //设定生成A标签的属性,结果类似&&a class="myCSSClass"href="/" id="myAnchorID"&This is an outgoing URL&/a& &
参数最多的调用方式是:
@Html.ActionLink("This is an outgoing URL", "Index", "Home",
"https", "", " myFragmentName",
new { id = "MyId"},
new { id = "myAnchorID", @class = "myCSSClass"})
得到的结果是:
&a class="myCSSClass" href="/Home/Index/MyId#myFragmentName" id="myAnchorID"&This is an outgoing URL&/a&
&Html.ActionLink方法生成的结果中带有HTML的&a&标签,而如果只是需要URL,可以使用Html.Action(),比如:
@Url.Action("Index", "Home", new { id = "MyId" }) //结果为单纯的/home/index/myid
如果需要在生成URL指定所用的路径记录,可以:
@Html.RouteLink("Click me", "MyOtherRoute","Index", "Customer") //指定使用路径注册表中的MyOtherRoute记录
上面讲的都是在Razor引擎视图中生成对外URL,如果是在控制器类中我们可以:
string myActionUrl = Url.Action("Index", new { id = "MyID" });
string myRouteUrl = Url.RouteUrl(new { controller = "Home", action = "Index" });
更多的情况是在控制类方法中需要转到其他的Action,我们可以:
public RedirectToRouteResultMyActionMethod() {
  return RedirectToAction("Index");
public RedirectToRouteResult MyActionMethod() {
  return RedirectToRoute(new { controller = "Home", action = "Index", id = "MyID" });
创建自定义ROUTE类
除了使用MVC自带的Route类,我们可以从RouteBase扩展自己的Route类来实现自定义的路径映射:
public class LegacyRoute : RouteBase
private string[]
public LegacyRoute(params string[] targetUrls)
urls = targetU
public override RouteData GetRouteData(HttpContextBase httpContext)
RouteData result = null;
string requestedURL = httpContext.Request.AppRelativeCurrentExecutionFileP
if (urls.Contains(requestedURL, StringComparer.OrdinalIgnoreCase))
result = new RouteData(this, new MvcRouteHandler());
result.Values.Add("controller", "Legacy");
result.Values.Add("action", "GetLegacyURL");
result.Values.Add("legacyURL", requestedURL);
public override VirtualPathData GetVirtualPath(RequestContext requestContext,
RouteValueDictionary values)
VirtualPathData result = null;
if (values.ContainsKey("legacyURL") &&
urls.Contains((string)values["legacyURL"], StringComparer.OrdinalIgnoreCase))
result = new VirtualPathData(this,
new UrlHelper(requestContext)
.Content((string)values["legacyURL"]).Substring(1));
GetRouteData()函数用于处理URL请求映射,我们可以这样注册路径映射:
routes.Add(new LegacyRoute(
"~/articles/Windows_3.1_Overview.html",
"~/old/.NET_1.0_Class_Library"));
上面的例子中如果我们请求"~/articles/Windows_3.1_Overview.html"将被映射到Legacy控制器的GetLegacyURL方法。
GetVirtualPath()方法则是用于生成对外链接,在视图中使用:
@Html.ActionLink("Click me", "GetLegacyURL", new { legacyURL = "~/articles/Windows_3.1_Overview.html" })
生成对外链接时得到的结果是:
&a href="/articles/Windows_3.1_Overview.html"&Click me&/a&
创建自定义ROUTE Handler
除了可以创建自定义的Route类,还可以创建自定义的Route handler类:
public class CustomRouteHandler : IRouteHandler {
public IHttpHandler GetHttpHandler(RequestContext requestContext) {
return new CustomHttpHandler();
public class CustomHttpHandler : IHttpHandler {
public bool IsReusable {
get { return false; }
public void ProcessRequest(HttpContext context) {
context.Response.Write("Hello");
注册路径时使用自定义的Route handler:
routes.Add(new Route("SayHello", new CustomRouteHandler()));
其效果就是针对链接 /SayHello的访问得到的结果就是&Hello&。
大型的Web应用可能分为不同的子系统(比如销售、采购、管理等)以方便管理,可以在MVC中创建不同的Area来划分这些子系统,在VS中右键点击Solution exploer-&Add-&Area可以添加我们想要的区域,在Solution exploer会生成Areas/&区域名称&的文件夹,其下包含Models、Views、Controllers三个目录,同时生成一个AreaRegistration的子类,比如我们创建一个名为Admin的区域,会自动生成名为AdminAreaRegistration的类:
namespace UrlsAndRoutes.Areas.Admin {
public class AdminAreaRegistration : AreaRegistration {
public override string AreaName {
return "Admin";
public override void RegisterArea(AreaRegistrationContext context) {
context.MapRoute(
"Admin_default",
"Admin/{controller}/{action}/{id}",
new { action = "Index", id = UrlParameter.Optional }
它的主要作用是注册一个到Admin/{controller}/{action}/{id}路径映射,在global.asax中会通过AreaRegistration.RegisterAllAreas()来调用到这里的RegisterArea()来注册区域自己的路径映射。
在Area下创建Controller、视图同整个工程下创建是相同的,需要注意的是可能遇到控制器重名的问题,具体解决参见命名空间优先级一节。
如果在视图中我们需要生成到特定Area的链接,可以在参数中指定Area:
@Html.ActionLink("Click me to go to another area", "Index", new { area = "Support" })
如果需要得到顶级控制器的链接area=""留空即可。
以上为对《Apress Pro ASP.NET MVC 4》第四版相关内容的总结,不详之处参见原版 。&&
阅读(...) 评论()未能映射路径,高手来
[问题点数:20分,结帖人z]
未能映射路径,高手来
[问题点数:20分,结帖人z]
不显示删除回复
显示所有回复
显示星级回复
显示得分回复
只显示楼主
相关帖子推荐:
2012年2月 挨踢职涯大版内专家分月排行榜第三2011年11月 挨踢职涯大版内专家分月排行榜第三2011年10月 挨踢职涯大版内专家分月排行榜第三
2011年9月 总版技术专家分月排行榜第一2011年8月 总版技术专家分月排行榜第一2011年7月 总版技术专家分月排行榜第一2011年6月 总版技术专家分月排行榜第一2011年5月 总版技术专家分月排行榜第一2011年4月 总版技术专家分月排行榜第一
2011年3月 总版技术专家分月排行榜第二2011年2月 总版技术专家分月排行榜第二
2011年9月 总版技术专家分月排行榜第一2011年8月 总版技术专家分月排行榜第一2011年7月 总版技术专家分月排行榜第一2011年6月 总版技术专家分月排行榜第一2011年5月 总版技术专家分月排行榜第一2011年4月 总版技术专家分月排行榜第一
2011年3月 总版技术专家分月排行榜第二2011年2月 总版技术专家分月排行榜第二
本帖子已过去太久远了,不再提供回复功能。2138人阅读
由于操作系统越来越慢,昨天重新做了一遍系统,悲剧出现了,之前用VS2010开发的程序竟然无法启动了,错误信息如下
ASP.NET 运行时错误 未能加载文件或程序集
“Microsoft.CSharp, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a”或它的某一个依赖项。
未提供所需的模拟级别,或提供的模拟级别无效。
操作系统为WIn64位旗舰版;不知道原因为何,正在查找原因,望大家给予指正
版权声明:本文为博主原创文章,未经博主允许不得转载。
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:166909次
积分:1716
积分:1716
排名:第12048名
原创:34篇
转载:40篇
评论:30条
(1)(1)(1)(1)(3)(1)(3)(3)(1)(4)(5)(3)(5)(6)(15)(4)(3)(2)(3)(4)(2)(1)(2)2113人阅读
1.检测到有潜在危险的 Request.Form 值
  (1)在提交数据的页面或webconfig中没有对validateRequest的属性进行正确的设置
  (2)HTML里面写了两个&form&引起
  方案一: 在.aspx文件头中加入这句: &%@ Page validateRequest="false" %&
  方案二: 修改web.config文件:
  &configuration&
  &system.web&
  &pages validateRequest="false" /&
  &/system.web&
  &/configuration&
  因为validateRequest默认值为true。只要设为false即可。
2.&在没有任何数据时进行无效的读取尝试&解决办法
  原因:
  所返回的sqldatareader无数据记录,但没有作记录判断力处理。返回的是空值
  加上判断即可: if (reader.read()) { TextName.Text =
  reader["FieldName"].ToString(); }
3.数据为空。不能对空值调用此方法或属性。
  若对象是null,那么调用对象的方法例如ToString()肯定出错一般是数据库字段的值为空
  在grideview等数据控件常出现
  解决:因此建议作NULL处理
4.阅读器关闭时 FieldCount 的尝试无效
  使用了SqlDataReader来绑定数据后,将connection对象作了Close()处理
  public SqlDataReader&& GetSomething()
  conn.open();
  SqlDataReader&& reader =
  sqlcmd.ExcecutReader(CommandBehavior.CloseConnection));
  conn.close();// occur error&& here
  return&&
  在绑定的时候调用了这个方法来指定数据源。如果使用这个方法则需要在调用函数中关闭Re
  ader这样conn就可以自动关闭。
  如果是使用的是SqlDataAdapter和DataSet那么请去掉显式关闭conn的调用。或者在finally
  中调用之。
5.未能映射路径
  原因:可能是在webconfig中的路径配置不正确所致,在FCKEditor的配置中这种问题比较突出
  &add key="FCKeditor:BasePath" value="~/admin/fckeditor/"/&
  &add key="FCKeditor:UserFilesPath" value="/UserFiles/" /&
6.Unreachable code detected
  原因:
  一般是在异常处理理或返回值时使用了 throw 或return ,可能是其位置放在前面,造成后面的代码执行到了。
  解决:
  把相关的异常抛出处理的语句(throw)或return 的语句放到代理执行的最后一行。
7.索引超出范围。必须为非负值并小于集合大小
  原因:
  (1).没有设置DATAKEYFIELD设为数据库中相对应的唯一字段(一般是主键)
  (2).DataGrid1.Columns & e.Item.Cells
  解决:
  (1).设置datakeyfield
  (2).加入判断语句datagrid1.item.count (datagrid可以是其它相类似的控件)
  9数据源不支持端的数据分页。
  解决方法:
  不要使用DataReader,改成使用DataSet:或使用自定义分页形式,不采用vs.net提供的分页功能
  OleDbDataAdapter da = new OleDbDataAdapter(sql, connection);
  DataSet ds2 = new DataSet();
  da.Fill(ds2, "News");
  GridView1.DataSource = ds2;
  GridView1.DataBind();
10.对象名'***** '无效
  原因:当前使用的数据库中没有*****这张表
  解决: 查看是否程序中是否写错了所调用的表的名称或看一下SQL数据库中是否存在你所调用的表
11.在建立与服务器的连接时出错。在连接到 SQL Server 2005 时,在默认的设置下 SQL
  Server 不允许进行远程连接可能会导致此失败。 (provider: 命名管道提供程序,
  error: 40 - 无法打开到 SQL Server 的连接)
  solution: 主机上需要用固定的IP地址或服务器地址
12.SqlDateTime 溢出。必须介于 1/1/:00 AM 和 12/31/:59 PM
  之间。
  出现这种问题``多半是因为你更新数据库时``datetime字段值为空``默认插入
  日``造成datetime类型溢出
13.出现-------表示&属性&,此处应为&方法&
  1.VB与c#的方法,属性的格式有所不一样导致。
  2.可能是在design中绑定数据的语法出现错误 解决: 1.记住属性用[] 方法用()
  2.记住绑定数据的正确语法(有以下几种方式::&%Container.DataItem(&字段名&)%& &%
  #Eval(&字段名&)%& &%Bind(&字段名&)%&等)
14.未能从程序集&DAL, Version=1.0.0.0, Culture=neutral,PublicKeyToken=null&中加载类型&DAL.SqlHelper&。
  原因:修改了其他层后未能重新编译成dll
  解决:编译一下(Rebuild)
15.为过程或函数 指定的参数太多,
  solution:调用过程与定义的过程所用的参数数量或所执行的SQL语句中所传入的参
  数个数不一致(这是个SQL的错误)
  解决方案:仔细检查在存储过程中所设定的参数变量,与实际输入的参数值是否一一对应
16.无法启动调试,绑定句柄无效
  原因:系统的Terminal&& Services没有开启
  17.Unable to debugging on the web server.Debug failed because integrated windows authentication is not enable
  解决方法:
  打开vs2005-&工具(Tools)-&选项(Option)-&调试(debugging)-&编辑并继续(Edit and Continue)-&全部打勾
18.Automation 操作中文件名或类名未找到: 'RegExp'
  解决方法:regsvr32 vbscript.dll
19.System.NullReferenceException: 未将对象引用设置到对象的实例。
  (1)所设置的变量为空值或没有取到值,一般出现在传递参数的时候出现这个问题,也会在使用datagrid或gridview或datalist等数据控件时出现.
  (2)控件名称与codebehind里面的没有对应
  (3)未用new初始化对象
  (4)在程序中所引用的控件不存在
  解决方法:
  (1)使用try..catch...finally捕捉错误,或直接用response.write()输出所取的变量值
  (2)查看代码中是否存在未初始化的变量
20.错误 1718。文件被数字签名策略拒绝(安装vs2005sp1时)解决方法:
  (1). 单击&开始&,单击&运行&,键入 control admintools,然后单击&确定&。
  (2). 双击&本地策略&。
  (3). 单击&软件限制策略&。(注意:如果未列出软件限制,请右击&软件限制策略&,然后单击&新建策略&。 )
  (4). 在&对象类型&下,双击&强制&。
  (5). 单击&除本地管理员以外的所有用户&,然后单击&确定&。
  (6). 重新启动计算机。
  微软说明:
21.vs2005不能从源文件模式切换到视图模式
  解决方法:dos下运行下 devenv /resetskippkgs (win+r cmd)
22.Validation of viewstate MAC failed
  解决办法:页面的顶部page加 EnableViewState="False" EnableViewStateMac = "False" 来解决这个问题
23.Automation server can't create object"(Automation 服务器不能创建)
  解决办法:运行: Regsvr32 scrrun.dll 即可。
24.包加载失败
  未能正确加载包"Visual Web Developer Trident Designer Package"(GUID =
  {30AE7E28-6C02-496D-8E43-85F7A90AEFF1}。
  解决方法:
  1、设置系统变量 VsLogActivity=1
  2、在%APPDATA%/Microsoft/VisualStudio/8.0/文件夹下创建文件ActivityLog.xml
  Microsoft Visual Studio
  LoadLibrary failed for package [Visual Web Developer Trident Designer Package]
  {30AE7E2B-6C02-496D-8E43-85F7A90AEFF1}
  --------------------------------------------------------------------------------
  8007007e
  c:/Program Files/Microsoft Visual Studio 8/Common7/Packages/tridsn.dll
  3、从 WINNT/MicroSoft.NET/Framework/v2.0.xxx 复制文件gdiplus.dll 到 Program Files/Visual Studio 8/Common7/Packages文件夹下
  4、在命令行下运行命令 :devenv /resetskippkgs
25.Error spawning 'cmd.exe'.
  解决方案:把cmd.exe 拷贝到VS安装目录下的VC/BIN目录里,可以解决问题。
26.尝试读取或写入受保护的内存
  解决:硬件有问题,一般内存有问题
27.无法在证书存储区中找到清单签名证书
  解决方法:用记事本打开项目的.csproj文件,删除类似
28.该项目中不存在目标&ResolveKeySource&。
  原因:这个问题很罕见,查询国外相关资料后,大致说是由于部署的不是一个标准的solution, 需要在VS自带的命令提示中运行下面这个东西恢复
  解决方法:
  (1).将下列代码存为XML文件,命名为TestBuild.xml
  &Project DefaultTargets="Build" xmlns=""&
  &PropertyGroup&
  &TargetConnectionString&Data Source=./sql2005%3BUser ID=SqlUser%3BPooling=False%3BPassword=X&/TargetConnectionString&
  &/PropertyGroup&
  &ItemGroup&
  &DatabaseProject Include="Database1/Database1.dbproj"/&
  &DatabaseProject Include="Database2/Database2.dbproj"/&
  &/ItemGroup&
  &Target Name="BuildAllDatabaseProjects"&
  &MSBuild
  Properties="TargetConnectionString=$(TargetConnectionString)"
  Projects="@(DatabaseProject)"
  Targets="BDeploy"&
  &/MSBuild&
  &/Target&
  (2)在命令提示中运行:msbuild /t:BuildAllDatabaseProjects TestBuild.xml
  &/Project&
29.不能将值 NULL 插入列 '**'
  原因:这是数据库表设计的错误,所涉及的表的字段中设置了不能为空的属性,但是传入的值为null,所以报错
  解决方法:查看是否所传入的值是否为Null,或修改数据库中表的所对应的列的属性
30.未能加载类型"命名空间.类"...
  (1)项目修改后没有进行编译
  (2)项目中原有的命名空间可能被修改了
  (3)项目中所需要的ascx或其他页面不存在,或不包含在项目中
  解决方法:
  (1)在修改完成之后,请重新生成或编译整个项目或解决方案
  (2)手工修改所改动的命名空间,注意名称的大小写,再重新编译
  (3)将相关的文件包含在项目中
31.不能访问只读文件&****.***"
  解决方案:
  给虚拟目录所对应的文件加上&Everyone/写入&权限即可
32.请求因 HTTP 状态 401 失败:Access Denied
&&&& 解决方法:在iis信息服务器上把匿名访问和允许iis控制密码给勾上
33.有一个无效 SelectedValue,因为它不在项目列表中
  原因:
  (1)在没有绑DropDownList之前就给DropDownList1.SelectedValue 赋值
  (2)dropdownlist中出现了null值
34.无法在&&已存在的情况下创建/影像复制该文件。
  解决方案:重新编译项目(多个project全部重新编译),关闭vs,重新打开,必要时重新启动机子。
35.用户 'C/ASPNET' 登录失败登录失败。
  异常详细信息: System.Data.SqlClient.SqlException: 用户 'COO/ASPNET' 登录失败。
  这是怎么回事啊?
  因为你的程序连接SQLServer的连接字符串是用了windows集成登陆,你可以改成用数据库帐号密码登陆。连接字符串的写法是:
  server=uid=pwd=database=
  server是数据库服务器的机器名或者IP,如果是同一台机可以用localhost
  uid是数据库登陆帐号
  pwd是数据库密码
  database是数据库初始owner名称
  答案:
  1、右击桌面我的电脑,选择&管理&,双击打开的&计算机管理&对话框中的&本地用户和组&下的&组& 在右边的窗口中双击&Remote Desktop Users&组,在打开的&Remote Desktop Users&属性对话框中 单击添加,在打开的&添加用户&对话框中单击&高级&,再单击&立即查找&按钮,在&搜索&结果中 双击ASPNET(如果是IIS6.0&NETWOR SERVERCE&)再点击两次确定完成添加&用户&
  2、单击&开始&--&所有程序&--&Microsoft SQL Server&--&企业管理器&在打开的&控制台根目录& 选择相应的数据库,右击该数据库的中的&用户&,选择&新建数据库用户&。在&新建用户&对话 框中点击&登陆名&右侧的下拉列表框,选择&新建&,打开&新建登陆对话框&。点击名称右侧的 省略号按钮,在打开的对话框中将&列出的名称&中选择&本机的名称&,再在下面的名称框中选定&Remote Desktop Users&,然后点击&成员&按钮,双击 ASPNET(如果是IIS6.0&NETWOR SERVERCE&),然后点击确定,在&新建登陆对话 框&中的默认设置的&数据库&选项中选择相应的数据库名称,再在&数据库访问&选项下勾选相应 的数据库点击确定,完成将ASP.net默认的匿名用户添加到SQL
36.用户 'nt authority/network service' 登录失败。
  1& sqlserver 调成sql server 和windows验证模式
  (以下方法仅供参考)
  第一步:把'NT AUTHORITY/NETWORK SERVICE' 添加到Administrator组中
  我的电脑--&右键--&管理--&本地用户和组
  选择&组&--&双击Administrators--&单击&添加&--&单击&高级&--&单击&立即查找&--&在下面的列表中选择Network Service用户--&两次单击&确定&--&加入。
  第二步 在企业管理器中加入NetWord Service用户
  打开Sql Server企业管理器--&选择数据库实例--&打开&性&节点--&选择&登录&--&在右边的列表中单击右键-- &选择&新建登录&--&在&常规&选项卡中单击&名称&旁边的按钮&...&--&选择&Administrators&组-- &单击下面的&成员&按钮--&选择&Network Service&--&单击&添加&按钮--&单击&确定&,返回&新建登录&对话框--&保证身份验证类型为&windows验证& 和&允许访问&--&单击&确定&--&关闭&企业管理器&
  第三步
  重新运行asp.net程序,数据库连接字符串选择windows验证即可。
  3& 在sqlserver中添加帐户或IIS_WPG工作组
  此方法来自于
37.未能加载视图状态。正在向其中加载视图状态的控件树必须与前一请求期间用于保存视图状态的控件树相匹配。例如,当以动态方式添加控件时,在回发期间添加的控件必须与在初始请求期间添加的控件的类型和位置相匹配。
  原因:viewstate的在Asp.net作用是将控件的状态保存,在下次Post给服务器,服务器进行恢复控件的状态。(控件的状态包括:值和事件。)
  解决方法:
  (1)每一个UserControl的viewstate都改为false
  (2)加入这个:
  this.Page.EnableViewState =
  此方法来源于:
  38.&由于启动用户实例的进程时出错,导致无法生成 SQL Server 的用户实例。该连接将关闭。&
  问题原因:
  这是微软的bug,并且微软已经承认,详情如下:
  出现此错误的条件是:你用过远程桌面连接,并且安装了SQL2005+VS2005,就有很大可能触发这个问题,微软说会在将来的XP SP3里面解决掉这个问题。
  解决:
   ... ID=128707&SiteID=1
  如果你看不懂英文,那么我告诉你我的解决办法:
  删除C:/Documents and Settings/[USERNAME]/Local Settings/Application Data/Microsoft/Microsoft SQL Server Data/SQLEXPRESS目录即可,[USERNAME]是用户名,比如说Administrator
  此问题来于
39.Server Application Unavailable
  The web application you are attempting to access on this web server is currently unavailable. Please hit the "Refresh" button in your web browser to retry your request.
  Administrator Note: An error message detailing the cause of this specific request failure can be found in the application event log of the web server. Please review this log entry to discover what caused this error to occur.
  解决:
  如果你运行WinXP/IIS 5.1,为了给ASPNET工作进程访问你的web工程文件夹的权力请到网站文件所在的目录,右键一级文件夹,选Security-Add-键入&ASPNET&,点击OK或点击Check Names,如果弹出对话框提示&Name not Found&则应点击Locations改变位置到本机计算机名,点击OK,分配此用户权限为&Full Control&点击OK。
  错误变为:
  You are not authorized to view this page
  You do not have permission to view this directory or page using the credentials you supplied.
  解决:
  在IIS里右键此虚拟目录-Properties-Directory Security-Edit-勾选上Integrated
authentication即可。
40.超时时间已到。超时时间已到,但是尚未从池中获取连接。出现这种情况可能是因为所有池连接均在使用,并且达到了最大池大小。
  可能原因如下:并发操作,Connection用后没有关闭,或者因为DataReader连接独占连接。
  解决方法:
  1 修改几个关键页面或访问比较频繁的数据库访问操作,使用DataAdapter和DataSet来获取数据库数据,不要使用DataReader。
  2 在访问数据库的页面上使用数据缓存,如果页面的数据不是经常更新(几分钟更新一次)的话,使用Cache对象可以不用访问数据库而使用缓存中的内容,那么可以大大减少连接数量。
  3 修改代码,把使用Connection对象的地方都在Close()后面加上Dispose()调用。
  4 建议对数据库操作进行大的修改,建立自己的数据库操作代理类,继承System.IDisposable接口,强迫释放资源,这样就不会出现连接数量不够的问题了
41.包加载失败
  未能正确加载包"Visual Web Developer Trident Designer Package"(GUID =
  {30AE7E28-6C02-496D-8E43-85F7A90AEFF1}。请与包供应商联系以获得帮助。由于可能会发生环境损坏,建议重新启动应用程序。要禁止将来将来加载此包吗?可以使用&devenv .reswetskippkgs&重新启用包加载。
  每次开机打开vs2005都会有这个提示,烦...
  于是在google了一下,发现很多方法都试过了,只有一个解决一试就行
  解决方法如下:
  1、设置系统变量 VsLogActivity=1
  2、在%APPDATA%/Microsoft/VisualStudio/8.0/文件夹下创建文件ActivityLog.xml
  3、从 WINNT/MicroSoft.NET/Framework/v2.0.xxx 复制文件gdiplus.dll 到 Program Files/Visual Studio 8/Common7/Packages文件夹下
  4、在命令行下运行命令 :devenv /resetskippkgs
  注:发现此问题只有在win2000会出现,win2003就不会出现这个问题.
42.用户"xxx/ASPNET登录失败"
  第一步
  把'NT AUTHORITYWORK SERVICE' 添加到Administrator组中
  我的电脑--&右键--&管理--&本地用户和组
  选择&组&--&双击Administrators--&单击&添加&--&单击&高级&--&单击&立即查找&--&在下面的列表中选work Service用户--&两次单击&确定&--&加入。
  第二步 在企业管理器中加.Network Service用户
  打开Sql Server企业管理器--&选择数据库实例--&打开&安全性&节点--&选择&登录&--&在右边的列表中单击右键--&选择&新建登录&--&在&常规&选项卡中单击&名称&旁边的按钮&...&--&选择&Administrators&组--&单击下面的&成员&按钮--&选择.Network Service&--&单击&添加&按钮--&单击&确定&,返回&新建登录&对话框--&保证身份验证类型为&windows验证&和&允许访问&--&单击&确定&--&关闭&企业管理器&
  第三步
  重新运行asp.Net程序,数据库连接字符串选择windows验证即可。
  以上针对win2003,如果是win2000 加ASp.Net用户
43.无法在&&已存在的情况下创建/影像复制该文件
  解决方法:重新编译整个项目 或者重启电脑
44.Could not create an environment: OCIEnvCreate returned -1
  解决方案一:
  主要是将oracle主目录oracle/的读写权限赋予asp.net或者是IUSER_..和IWAM_..,重启计算机。
  解决二:
  打开在IIS中的WEB属性--主目录--执行权限【改为-脚本和可执行文件】;
  -应用程序池【改为-MSSharePointAppPool】,刷新OK;
  解决三:
  文件夹权限可以不用管。
  设置ORACLE_HOME变量的方法如下
  控制面板&&系统&&高级&&环境变量&&系统变量&&新建系统变量
  变量名写ORACLE_HOME
  变量值添实际的ORACLE_HOME路径,在注册表中有
45.由于目标机器积极拒绝,无法连接
  在添加完引用后, 用localhost替换掉所有的localhost:2473,重新编译
46.能加载视图状态。正在向其中加载视图状态的控件树必须与前一请求期间用于保存视图状态的控件树相匹配。
&&&& 例如,当以动态方式添加控件时,在回发期间添加的控件必须与在初始请求期间添加的控件的类型和位置相匹配
  解决:在页面的 Page 项添加 EnableViewState="false" 即可
47.在以下方法或属性之间的调用不明确:&method1&和&method2&
  因隐式转换的缘故,编译器无法调用重载方法的某种形式。可以用以下方法纠正该错误:
  以不发生隐式转换的方式指定此方法的参数。
  移除此方法的所有重载。
  在调用方法之前,强制转换到正确的类型。
48.在应用程序级别以外使用注册为 allowDefinition='MachineToApplication'
  解决:在网站对应的虚拟目录上右键,选属性,然后在应用程序名后点创建,名字随便填
  [子目录不会继承上级的属性,所以要将aspx文件所在的目录属性设置正确]
49.无法识别的配置节&connectionStrings&
  原因:
  用vs2005开发的asp.net应用程序需要使用.net framework 2.0,而在iis中的默认.net环境是1.1。这时将发生不可识别的节点的问题。
  解决办法:
  将.net环境升级为2.0,开始-》运行-》cmd-》
  C:/WINDOWS/Microsoft.NET/Framework/v2.0.50727/aspnet_regiis.exe -i
50.Timeout expired. The timeout period elapsed prior to obtaining a connection from the pool. This may have occurred because all pooled connections were in use and max pool size was reached.
  Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.
  Exception Details: System.InvalidOperationException: Timeout expired. The timeout period elapsed prior to obtaining a connection from the pool. This may have occurred because all pooled connections were in use and max pool size was reached.
  主要原因可能有:
  1.使用了连接池,大量的sqlconnection用了后忘记关闸门,导致SQL占用严重,可以用 exec sp_who 这个存储过程查看一下
  2.连接池的连接数有所限制
  解决方法:
  1.释放连接池,调用Connection对象的Close()方法关闭数据库连接
  2.利用try catch finally对数据库连接进行异常处理。当无法连接数据库时将抛出异常,并显示出错信息,见catch代码块所示。在此程序中,无论是否发生异常,都可以通过finally区块关闭数据库的连接,从而节省计算机资源
  3.将SqlConnection对象包含到using区块中,这样程序会自动调用Dispose()方法释放SqlConnection对象所占用的系统资源,无需再使用SqlConnection对象的Close()方法
  3.指定min pool size表示连接池允许的最小连接数(默认为0)。下面的代码指定了SqlConnection对象的max pool size为10,min pool size为5。
  SqlConnection mySqlConnection = new SqlConnection("server=database=N")
版权声明:本文为博主原创文章,未经博主允许不得转载。
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:72562次
积分:1134
积分:1134
排名:第19684名
原创:41篇
评论:25条
(1)(1)(2)(3)(2)(2)(5)(2)(3)(4)(1)(2)(4)(3)(1)(4)(1)(4)

我要回帖

更多关于 如何设置映射路径 的文章

 

随机推荐