我正在学习PowerShell,并且正在使用Write-Host检查新PowerShell脚本文件中的变量赋值.然后我读了这篇文章:http: //windowsitpro.com/blog/what-do-not-do-powershell-part-1
所以,在我的.ps1文件中,我替换了这样的语句:
Write-Host "Start"
Write-Host "End"
Run Code Online (Sandbox Code Playgroud)
... 有了这个:
Write-Debug "Start"
Write-Debug "End"
Run Code Online (Sandbox Code Playgroud)
但是当我在Windows PowerShell ISE中运行保存的脚本时,没有输出写入控制台.我将-debug附加到调用脚本的语句中,如下所示:
PS E:\trialrun> .\MyScript.ps1 -debug
Run Code Online (Sandbox Code Playgroud)
但同样,输出不会写入控制台.显然我正在使用Write-Debug错误.如何将调试输出写入控制台?谢谢.
我正在使用Visual Studio 2013中的ASP.NET解决方案,该解决方案无法达到断点.Visual Studio将成功点击其他解决方案的断点,此解决方案中的断点以前有效.但此时他们无法工作.
我正在使用Visual Studio 2013 Ultimate,Update 4.这是安装在Windows 8.1,64位上.
这是一个包含3个项目的MVC解决方案:BusinessEntities,DataAccessLayer(DAL)和Web项目.所有这些项目中的断点都无法正常工作.我甚至在家庭控制器的Index ActionResult内部尝试了断点,但仍未能在断点处停止.
在Visual Studio功能区中,解决方案配置设置为Debug.此外,Configuration Manager显示我的所有3个项目都将配置设置为Debug.重新启动IIS,重新启动Visual Studio,并重新启动并没有解决此问题.选择Build> Clean Solution,Build> Rebuild,然后Debug> Start Debugging也没有修复它.
在web.config中,debug在此节点中设置为true:
<system.web>
<compilation debug="true" targetFramework="4.0" />
Run Code Online (Sandbox Code Playgroud)
我的项目的bin目录中有.pdb文件.我确认在清理解决方案时它们会被删除,并在重建时重新创建.
我还需要检查什么?我真的需要在此解决方案中使用断点.谢谢.
========
2014年12月30日的更新 - 根据@ paul.abbott.wa.us的评论,以下是我尝试过的几件事.我删除了几条评论,为了清楚起见,只是附在此处.
========
我正在通过VS启动应用程序,并在IIS下运行它.IIS的版本是8.5.在公开进程名称时(通过System.Diagnostics.Process.GetCurrentProcess().ProcessName),它是w3wp.
在IIS中,Web应用程序具有类似"local.mysite"的站点名称,并且在hosts文件中有匹配的条目.该站点使用DefaultAppPool,它使用.NET CLR版本4.0和集成管理管道模式.我的解决方案中的3个应用程序面向.NET Framework 4.
如果我将其切换回IIS Express,调试器将开始工作.IIS的版本更改为8.0,进程名称当然是iisexpress.从技术上讲,我不必在工作站上的IIS下运行它,但我更愿意这样做.我在IIS中错误配置或忽略了什么可能导致调试器失败?
在属性页面的Web选项卡上查看项目服务器设置,我注意到下拉列表设置为"IIS Express".切换到"本地IIS"后,系统提示我以管理员身份运行VS. 在这之后,我能够将服务器更改为本地IIS,并点击调试器.我检查了更改,关闭VS,启动VS不作为Admin运行,并加载解决方案.无法使用以下消息加载Web项目:Web应用程序项目[MySiteName]配置为使用IIS.无法访问IIS元数据库.您没有足够的权限访问计算机上的IIS网站.
最终,该站点的某些部分将采用Active Directory身份验证.那么,我是否需要在IIS Express下运行站点,或者如果我希望在IIS下运行站点,则始终以管理员身份运行VS?谢谢.
我找到了一个解决方案来解决"Web应用程序项目[MyApp]配置为使用IIS"的错误消息.无法访问IIS Metabase.您没有足够的权限访问计算机上的IIS网站."请按照此文章中的步骤操作. 错误 - 无法访问IIS元数据库
授予我的帐户访问intetsrv\config文件夹后,Web项目在Visual Studio中正确加载,而无需以管理员身份运行VS.
但现在当我启动该站点时,会出现另一个警告:"无法在Web服务器上启动调试.IIS未列出与启动的URL匹配的网站.单击"帮助"以获取更多信息."最初我只是单击"创建虚拟目录"并再次启动,但同样的警报再次出现.
所以我从警报中选择了"帮助"按钮.这导致了这个MSDN页面,该页面提出了大约2个要检查的内容,其中大约一半的链接到其他文章.我现在感觉有点像爱丽丝梦游仙境,沿着兔子洞向下走.
2015年2月3日更新:我在本地IIS实例上运行此方法时的解决方法是将Visual Studio作为管理员运行.最终,我们更改了应用程序以使用IIS Express,然后放弃了应用程序,以寻找同事建立的另一个解决方案.这个决定与这个问题无关.感谢大家的反馈和想法.
2016年3月7日更新:在这个时候,我无法复制这个问题,因为我们不再有它在哪里,当我在它去年的工作状态的解决方案.如果主持人可以解决这个问题,我将不胜感激.关闭此选项的选项与我当前的场景不一致,但如果他们遇到此场景,其他人可能会发现以下建议很有用.感谢所有提出建议的人.
今天我在PC上收到了一套Microsoft更新.在这些更新之后,当我在Visual Studio 2013中开始调试时,Chrome开始间歇性地挂起.我有Windows 8.1 Enterprise,64位和带有Update 4的Visual Studio 2013 Ultimate.在我的工作站上,Chrome版本为39.0.2171.95 m.
通过F5或Ctrl + F5进行调试(无需调试即可启动)没有任何区别,Chrome仍然会间歇性地挂起.这发生在多个Web应用程序项目中,甚至是一个未连接到任何外部数据库的项目.当我使用Internet Explorer,Firefox和Safari进行调试时,Visual Studio 2013工作正常.其中一个站点在我的工作站本地IIS中设置,我可以成功浏览到Chrome中的站点.但是,如果我通过Visual Studio 2013启动相同的站点,浏览器就会挂起.我清除了Chrome中的历史记录和Cookie.重新启动不会纠正此问题.
特别令人讨厌的是问题是间歇性的.如果我在Visual Studio调试器中循环浏览多个浏览器,Chrome有时会起作用.在过去,它始终有效.鉴于我的PC今天收到了大约30个更新,我怀疑问题与其中一个更改有关.
是否有其他人在Visual Studio 2013中遇到此Chrome问题,如果是这样,修复程序是什么?谢谢.
===编辑1/9/2015 ===
在进一步排除故障后,我能够始终如一地复制该问题,现在可以为Chrome 提供解决方法.我一直在以管理员身份运行Visual Studio(提升模式).
要复制此操作,请执行以下操作:
相比之下,您可以按照上述步骤为其他浏览器(IE,Firefox和Safari),他们将成功地工作而不会挂起.
有两种解决方法.第一步:避免以管理员身份运行Visual Studio 2013,您将能够从VS成功启动Chrome.以下是第二种解决方法的步骤.
我的理论是,当Visual Studio尝试启动新的浏览器实例时,如果它检测到Chrome未运行,它会尝试以提升模式启动Chrome.这导致Chrome挂起.那只是我的理论.对Visual Studio或Chrome的内部工作有更多了解的人会更深入地了解这一点.
请注意,这是一种解决方法.我不认为它是一个解决方案,因为这只是解决过去工作的功能.
我正在使用Visual Studio 2012主题中的Dark主题.我已经安装了VS 2012颜色主题编辑器.我想要做的是在选择错误时更改错误列表中显示的背景颜色.
目前,背景颜色是高度饱和的亮蓝色.错误的文字是白色的.亮蓝色的白色很难读.我想把那个蓝色调下来.但是我无法在颜色主题编辑器中找到可以调整它的属性.我可以在编辑器中调整什么颜色属性来改变它?谢谢.
随着Twitter在2013年6月11日关闭API 1.0水龙头,我们有几个网站现在无法显示时间表.我一直在寻找一个"如果你这样做,现在做这个"的例子.这是推特的宣布. https://dev.twitter.com/blog/api-v1-is-retired
以下是我们最初通过API 1.0显示Twitter时间线的内容.
<div id="twitter">
<ul id="twitter_update_list"></ul>
<script type="text/javascript" src="http://twitter.com/javascripts/blogger.js"></script>
<script type="text/javascript" src="http://api.twitter.com/1/statuses/user_timeline/companytwitterhandle.json?callback=twitterCallback2&count=1"></script>
<div style="float:left;"><a href="https://twitter.com/companytwitterhandle" target="_blank">@companytwitterhandle</a> | </div>
<div class="twitterimg"> </div>
</div>
Run Code Online (Sandbox Code Playgroud)
最初我尝试更改JavaScript参考URL中的版本,这样做无效.
<script type="text/javascript" src="http://api.twitter.com/1.1/statuses/user_timeline/companytwitterhandle.json?callback=twitterCallback2&count=1"></script>
Run Code Online (Sandbox Code Playgroud)
然后我查看了Twitter API文档(https://dev.twitter.com/docs/api/1.1/overview),该文档缺少明确的转换示例.我没有4或5个小时深入研究,或者进入这个蓬乱的常见问题解答(https://dev.twitter.com/docs/faq#17750).
然后我找到了关于用户时间线的API文档.所以我再次更改了URL,如下所示. https://dev.twitter.com/docs/api/1.1/get/statuses/user_timeline
<script type="text/javascript" src="https://api.twitter.com/1.1/statuses/user_timeline.json?screen_name=companytwitterhandle&count=1"></script>
Run Code Online (Sandbox Code Playgroud)
那没用.
使用jQuery或C#ASP.NET MVC,如何将该接口从Twitter API 1.0转换到Twitter API 1.1?如果可能的话,我的第一个偏好是浏览器客户端实现.请包含一个代码示例.谢谢.
我正在编写一个API控制器,用于接收和解析JSON异步帖子的内容,并且无法读取该帖子中StringContent对象的内容.
这是我的API控制器中我希望看到的值的部分.到达ApiController方法的值为null.并且jsonContent值是一个空字符串.我期待看到的是JSON对象的内容.
public class ValuesController : ApiController
{
// POST api/values
public void Post([FromBody]string value)
{
HttpContent requestContent = Request.Content;
string jsonContent = requestContent.ReadAsStringAsync().Result;
// Also tried this per mybirthname's suggestion.
// But content ends up equaling 0 after this runs.
var content = Request.Content.ReadAsStreamAsync().Result.Seek(0, System.IO.SeekOrigin.Begin);
}
}
Run Code Online (Sandbox Code Playgroud)
这是我的控制器,以显示它是如何被调用的.
[HttpPost]
public ActionResult ClientJsonPoster(MyComplexObject myObject)
{
this.ResponseInfo = new ResponseInfoModel();
PostToAPI(myObject, "http://localhost:60146", "api/values").Wait();
return View(this.ResponseInfo);
}
Run Code Online (Sandbox Code Playgroud)
这是发布方法.
private async Task PostToAPI(object myObject, string endpointUri, string endpointDirectory)
{
string myObjectAsJSON = System.Web.Helpers.Json.Encode(myObject); …
Run Code Online (Sandbox Code Playgroud) 我的应用程序上有一个ActionFilterAttribute,用于在检测到用户未经过身份验证时重定向用户.在过滤器中,我想检测一个动作的ReturnType何时是JsonResult.
作为一种解决方法,我最初创建了IsJsonResult的自定义属性,并使用该属性修饰了我的解决方案中的JsonResult方法.这有效,并在动作过滤器中实现如下:
public class CheckUser : ActionFilterAttribute
{
public override void OnActionExecuting(ActionExecutingContext actionExecutingContext)
{
base.OnActionExecuting(actionExecutingContext);
object[] customAttributes = actionExecutingContext.ActionDescriptor.GetCustomAttributes(true);
bool isJsonResult = customAttributes.FirstOrDefault(a => a.GetType() == typeof(IsJsonResult)) != null;
if (isJsonResult)
{
return; // Don't perform any additional checks on JsonResult requests.
}
// Additional checking code omitted.
}
}
Run Code Online (Sandbox Code Playgroud)
这有效,但我不喜欢在这个项目中装饰所有JsonResult动作的想法.如果将新的JsonResult添加到项目中,那很容易失败,我们忘记相应地装饰它.
此外,我可以看到名称为"JsonResult"的ReturnType位于上面显示的actionExecutingContext对象中的调试器中.以下是观察窗口中显示的路径:
actionExecutingContext > ActionDescriptor > [System.Web.Mvc.ReflectedActionDescriptor] > MethodInfo > ReturnType > FullName
Run Code Online (Sandbox Code Playgroud)
该FullName属性的值为"System.Web.Mvc.JsonResult".
所以我似乎可以直接从actionExecutingContext对象中提取该值,并创建一个支持方法来返回一个bool指标.为此,这里是我编写的代码.
private bool isReturnTypeJson(ActionExecutingContext actionExecutingContext)
{
string actionName = actionExecutingContext.ActionDescriptor.ActionName;
string controllerName = actionExecutingContext.ActionDescriptor.ControllerDescriptor.ControllerName;
Type controllerType …
Run Code Online (Sandbox Code Playgroud) 将规范链接设置为井符号是否合法,如下所示,还是我需要输入物理页面名称?
<link rel="canonical" href="#">
Run Code Online (Sandbox Code Playgroud)
测试时,磅设置不会产生验证错误(ala #development = 1).在我的方案中,使用此布局文件的页面将没有备用的"常规HTML"版本.唯一的版本是AMP HTML版本.
对于其他上下文,我正在尝试使用AMP HTML的MVC网站.为了保持我的布局文件简单,我更喜欢使用井号而不是提取子页面名称并将其应用于href属性.我知道如何通过以下代码将URL应用于局部视图:
<link rel="canonical" href="@HttpContext.Current.Request.Url.AbsoluteUri">
Run Code Online (Sandbox Code Playgroud)
我只是好奇它是否是使用英镑符号的合法AMP HTML.谢谢.
我正在开发 jQuery 信用卡到期日期验证脚本。信用卡在到期月份的最后一天后到期。例如,如果该卡于 8/2013 到期,则其有效期至 8/31/2013。
过去,在服务器端,我通过将当前月份加 1,然后减去 1 天来确定该月的最后一天。
今天我注意到,在创建新日期时,如果将 0 应用于 JavaScript Date() 对象的第三个参数,则生成的日期将是月底。但我无法找到任何在线文档来证实这一观察结果。
这是一些示例代码。
var month = 10;
var year = 2013;
var expires = new Date(year, month, 0);
alert(expires);
Run Code Online (Sandbox Code Playgroud)
这是我创建的jsFiddle 示例。
这有点令人困惑,因为我认为 JavaScript 中的月份是从零开始的。我已经在 Chrome、Firefox、IE 和 Safari 中对此进行了测试,并且行为看起来是一致的。返回的日期始终显示该月的最后一天。这看起来是一个幸运的发现,但我真的很想了解这里发生了什么。
我可以安全地使用这种方法来指定月末日期吗?如果可以,是否有一些在线文档可以指出来证实这一点?谢谢。
在EPiServer 7.5中,我创建了一个NewsArticle模型,它具有各种文本字段的多个属性.其中一些属性具有StringLength限制.例如,新闻文章的标题是这样装饰的:
[Display(
Order = 10,
Name = "Title (Headline)",
Description = "The article's title (headline). Title also appears in the browser tab.",
Prompt = "Article headline or title",
GroupName = SystemTabNames.Content
)]
[Required]
[StringLength(100)]
public override string Title { get; set; }
Run Code Online (Sandbox Code Playgroud)
添加新的NewsArticle页面时,我希望将输入显示为比浏览器为元素显示的默认宽度字段更长的字段.
在Add Page界面中呈现时,我可以将该类或样式应用于该字段吗?或者是否有一些可以装饰房产的房产会使房间更长?
这是我所指的界面的屏幕截图.我想在该表单上使该标题字段更宽.
我正在使用Revealing Prototype Pattern并且有两个不同的原型,我将它放入同一个JavaScript文件中.这些链接是我发现的与此相关的文章. http://bit.ly/U83hdg,http://bit.ly/VmJ71h.
我的印象是,这些操作会像原子类一样运行,其中与一个相关的功能将不知道另一个中的功能.
例如,这两个原型都具有"init"和"set"功能.我在浏览器中看到的行为是,即使代码引用了第一个原型名称,也会执行最后一个版本的"init".
这是我的两个原型中的通用精简代码.
var operationA = function (control, settings) {
this.control = control;
this.settings = settings;
};
operationA.prototype = function () {
init = function () {
// do something
return this;
}
set = function () {
// do something
return this;
};
return {
init: init,
set: set
};
}
var operationB = function (control, settings) {
this.control = control;
this.settings = settings;
};
operationB.prototype = function () {
init = …
Run Code Online (Sandbox Code Playgroud) 我有一个 FillDataRecord 方法,该方法将值分配给 IDataRecord 中的对象。它会一直工作,直到遇到具有 NULL 值的字段,此时它会中断并显示消息:“数据为 Null。无法对 Null 值调用此方法或属性。”
解决方法是使用 IDataRecord.IsDBNull,我已经这样做了,但我想让它更干净。这是带有一些相关注释的代码。
private static Employee FillDataRecord(IDataRecord dataRecord)
{
Employee employee = new BusinessEntities.Employee();
employee.EmployeeID = dataRecord.GetInt32(dataRecord.GetOrdinal("EmployeeID"));
// Other fields omitted for brevity...
// This breaks when StreetLine2 is NULL.
employee.StreetLine2 = dataRecord.GetString(dataRecord.GetOrdinal("StreetLine2"));
// This is my first workaround, which fixes the above error but is verbose.
if (dataRecord.IsDBNull(dataRecord.GetOrdinal("StreetLine2")))
employee.StreetLine2 = "";
else
employee.StreetLine2 = dataRecord.GetString(dataRecord.GetOrdinal("StreetLine2"));
// This is my second workaround, which uses a custom method shown below.
// But …
Run Code Online (Sandbox Code Playgroud) 如何从 ASP.NET MVC Core 3.1 Web 应用程序中的页面 URL 中删除“Home”控制器路径?
而不是渲染这个 URL ...
www.mysite.com/Home/About
Run Code Online (Sandbox Code Playgroud)
...我想看到这个:
www.mysite.com/About
Run Code Online (Sandbox Code Playgroud)
目前,我正在使用 ASP.NET Core 3.1 将旧的 MVC .NET Web 应用程序从 Visual Studio 2013 (.NET Framework 4.7.2) 迁移到 Visual Studio Code。我之前的应用程序注册了这个路由,从而产生了如上所示的效果。
routes.MapRoute(
name: "RemoveHomeFromURL",
url: "{action}",
defaults: new { controller = "Home", action = "Index" },
namespaces: new[] { "MyWebsite.Controllers" }
);
Run Code Online (Sandbox Code Playgroud)
我希望在这个新的 ASP.NET Core Web 应用程序中获得类似的结果。我在 Startup.cs 中定义了这些端点:
app.UseEndpoints(endpoints =>
{
endpoints.MapAreaControllerRoute(
name: "AreaA",
areaName: "AreaA",
pattern: "AreaA/{controller=Home}/{action=Index}/{id?}");
endpoints.MapAreaControllerRoute(
name: "AreaZ",
areaName: "AreaZ",
pattern: "AreaZ/{controller=Home}/{action=Index}/{id?}");
endpoints.MapControllerRoute( …
Run Code Online (Sandbox Code Playgroud) asp.net-mvc ×5
c# ×5
jquery ×3
javascript ×2
.net ×1
amp-html ×1
asp.net ×1
asp.net-core ×1
async-await ×1
css ×1
date ×1
debugging ×1
episerver ×1
json ×1
namespaces ×1
null ×1
powershell ×1
prototype ×1
themes ×1
twitter ×1
validation ×1