int seconds; using (var reader = new SpeechSynthesizer()) { if (int.TryParse(After_Second.Text, out seconds)) { using (Process myProcess = new Process()) { myProcess.StartInfo.FileName = "cmd.exe"; myProcess.StartInfo.UseShellExecute = false; myProcess.StartInfo.RedirectStandardInput = true; myProcess.StartInfo.RedirectStandardOutput = true; myProcess.StartInfo.RedirectStandardError = true; myProcess.StartInfo.CreateNoWindow = true; myProcess.Start(); reader.Speak(string.Format("计算机将在{0}秒后关机", seconds)); myProcess.StandardInput.WriteLine(string.Format("shutdown -s -t {0}", seconds)); var webClient = new WebClient() { Encoding = Encoding.UTF8 }; var location = webClient.DownloadString("http://int.dpool.sina.com.cn/iplookup/iplookup.php?format=json"); var json = new JavaScriptSerializer().Deserialize<dynamic>(location); json["city"] = json["city"] ?? HttpUtility.UrlEncode("北京"); var city = HttpUtility.UrlDecode(json["city"], Encoding.UTF8); string url = string.Format("http://php.weather.sina.com.cn/xml.php?city={0}&password=DJOYnieT8234jlsK&day=0", HttpUtility.UrlEncode(city, Encoding.GetEncoding("gb2312"))); string weather = webClient.DownloadString(url); var xml = new XmlDocument(); xml.LoadXml(weather); Response.Write(xml); var root = xml.SelectSingleNode("/Profiles/Weather"); var detail = root["status1"].InnerText + "," + root["direction1"].InnerText + root["power1"].InnerText.Replace("-", "到") + "级," + root["gm_s"].InnerText + root["yd_s"].InnerText; reader.Speak("今天是" + DateTime.Now.ToShortDateString() + "," + city + " " + detail); } } else { reader.Speak("应该输入整数"); } }
本机跑没问题,部署到iis上就不行了
windows 事件日志
事件代码: 3005 事件消息: 发生了未经处理的异常。 事件时间: 2013/11/21 20:47:25 事件时间(UTC): 2013/11/21 12:47:25 事件 ID: 08881300a16a4e1fb2a56ed1747c5ae5 事件序列: 16 事件匹配项: 1 事件详细信息代码: 0 应用程序信息: 应用程序域: /LM/W3SVC/2/ROOT-4-130295109146037174 信任级别: Full 应用程序虚拟路径: / 应用程序路径: D:\WebRoot\WebTest\ 计算机名: SUPER-PC 进程信息: 进程 ID: 7288 进程名: w3wp.exe 帐户名: IIS APPPOOL\DefaultAppPool 异常信息: 异常类型: HttpUnhandledException 异常消息: 引发类型为“System.Web.HttpUnhandledException”的异常。 在 System.Web.UI.Page.HandleError(Exception e) 在 System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) 在 System.Web.UI.Page.ProcessRequest(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) 在 System.Web.HttpContext.InvokeCancellableCallback(WaitCallback callback, Object state) 在 System.Web.UI.Page.LegacyPageAsyncInfo.CallHandlersPossiblyUnderLock(Boolean onPageThread) 只能在执行 Render() 的过程中调用 RegisterForEventValidation; 在 System.Web.UI.ClientScriptManager.RegisterForEventValidation(String uniqueId, String argument) 在 System.Web.UI.WebControls.TextBox.AddAttributesToRender(HtmlTextWriter writer) 在 System.Web.UI.WebControls.WebControl.RenderBeginTag(HtmlTextWriter writer) 在 System.Web.UI.WebControls.TextBox.Render(HtmlTextWriter writer) 在 System.Web.UI.Control.RenderControlInternal(HtmlTextWriter writer, ControlAdapter adapter) 在 System.Web.UI.Control.RenderChildrenInternal(HtmlTextWriter writer, ICollection children) 在 System.Web.UI.HtmlControls.HtmlForm.RenderChildren(HtmlTextWriter writer) 在 System.Web.UI.HtmlControls.HtmlContainerControl.Render(HtmlTextWriter writer) 在 System.Web.UI.Control.RenderControlInternal(HtmlTextWriter writer, ControlAdapter adapter) 在 System.Web.UI.Control.RenderChildrenInternal(HtmlTextWriter writer, ICollection children) 在 System.Web.UI.Page.Render(HtmlTextWriter writer) 在 System.Web.UI.Control.RenderControlInternal(HtmlTextWriter writer, ControlAdapter adapter) 在 System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) 请求信息: 请求 URL: http://192.168.1.100:8888/default.aspx 请求路径: /default.aspx 用户主机地址: 192.168.1.103 用户: 是否已经过身份验证: False 身份验证类型: 线程帐户名: IIS APPPOOL\DefaultAppPool 线程信息: 线程 ID: 7 线程帐户名: IIS APPPOOL\DefaultAppPool 是否正在模拟: False 堆栈跟踪: 在 System.Web.UI.Page.HandleError(Exception e) 在 System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) 在 System.Web.UI.Page.ProcessRequest(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) 在 System.Web.HttpContext.InvokeCancellableCallback(WaitCallback callback, Object state) 在 System.Web.UI.Page.LegacyPageAsyncInfo.CallHandlersPossiblyUnderLock(Boolean onPageThread) 自定义事件详细信息:
这个网址上说的 http://support.microsoft.com/kb/555134 iis admin服务,找不到啊啊。。是不是缺少什么权限什么的??
按照这样设置了也不行 http://hi.baidu.com/lurupin2012/item/343b771eaf9f87a6feded5da
还有就是在本机虽然执行完毕了,但是浏览器还是一直在加载等待数据返回的状态,这又是为什么呢。
你可以写个windows服务,通过数据里面的某个数据来对机器进行关机。
windowns服务扫描端口?实现的方法有很多,调用com也能实现,这个问题如果要解决应该去怎么搞。。
@Rookier:我前几天做了个小服务 ,通过定时的去读取自己邮箱的邮件,然后判断最近1分钟的邮件中是不是有某个特殊标题的邮件(例如:关机),如果发现就调用dos命令关机。你可以考虑定时的访问你自己的数据库,在数据库中建一张表,然后通过几个字段的规则来控制就行。
@Liook: 也就是搞个服务,要么扫描端口,要么数据库,这也是一种方法,就是用iis部署,不能调用本机程序的问题,这个应该怎么配置呢
@Rookier: 用IIS的话可能还是会有权限不足的问题。你试试将你对应程序的文件夹的权限设置成everyone试试,不过这个相对安全性比较低
@Liook: 自家局域网,不用考虑什么安全性,问题是这样设置了也不行。。。
难道是想通过网页来对客户机进行关机?
你猜对了。。
@Rookier: 不行的吧,客户端关服务器还行,关客户端,那岂不是...相当恐怖、
再说了这些后台程序都是在服务器上执行的
@大芝麻: 就是要关服务器啊,这就是触发事件然后代码在服务器端执行的吧。
@Rookier: 去启动一个进程可能是有些权限问题把。看看这个直接调用API的
http://developer.51cto.com/art/200907/139857.htm
@大芝麻: 我知道会有权限问题,但是这样的问题权限应该是怎么更改才能实现的?
@Rookier:你那个找不到的IIS ADMIN 这样试试
控制板面=》系统和安全=》管理工具(在倒数第二个)=》服务
IIS应用程序池,里的用户搞成LOcalSystem 看看
不要求安全性的话
直接添加user:everyone,把权限调成 完全控制
再试试吧
iis默认用户貌似就叫IIS_USER
关注下
我也遇到了类似的问题,最后解决方案是:将IIS里面你程序用到的程序池的高级设置中“启用32位应用程序”置为true,“加载用户配置文件”置为true。