首页 新闻 会员 周边 捐助

iis web 远程关机

0
悬赏园豆:20 [已解决问题] 解决于 2013-12-09 11:17
 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 

还有就是在本机虽然执行完毕了,但是浏览器还是一直在加载等待数据返回的状态,这又是为什么呢。

Rookier的主页 Rookier | 小虾三级 | 园豆:652
提问于:2013-11-21 21:30
< >
分享
最佳答案
0

你可以写个windows服务,通过数据里面的某个数据来对机器进行关机。

收获园豆:5
Liook | 菜鸟二级 |园豆:207 | 2013-11-22 16:03

windowns服务扫描端口?实现的方法有很多,调用com也能实现,这个问题如果要解决应该去怎么搞。。

Rookier | 园豆:652 (小虾三级) | 2013-11-22 17:44

@Rookier:我前几天做了个小服务 ,通过定时的去读取自己邮箱的邮件,然后判断最近1分钟的邮件中是不是有某个特殊标题的邮件(例如:关机),如果发现就调用dos命令关机。你可以考虑定时的访问你自己的数据库,在数据库中建一张表,然后通过几个字段的规则来控制就行。

Liook | 园豆:207 (菜鸟二级) | 2013-11-23 11:14

@Liook: 也就是搞个服务,要么扫描端口,要么数据库,这也是一种方法,就是用iis部署,不能调用本机程序的问题,这个应该怎么配置呢

Rookier | 园豆:652 (小虾三级) | 2013-11-24 11:20

@Rookier: 用IIS的话可能还是会有权限不足的问题。你试试将你对应程序的文件夹的权限设置成everyone试试,不过这个相对安全性比较低

Liook | 园豆:207 (菜鸟二级) | 2013-11-24 11:26

@Liook: 自家局域网,不用考虑什么安全性,问题是这样设置了也不行。。。

Rookier | 园豆:652 (小虾三级) | 2013-12-03 16:33
其他回答(5)
0

难道是想通过网页来对客户机进行关机?

大芝麻 | 园豆:4 (初学一级) | 2013-11-21 21:33

你猜对了。。

支持(0) 反对(0) Rookier | 园豆:652 (小虾三级) | 2013-11-21 21:35

@Rookier: 不行的吧,客户端关服务器还行,关客户端,那岂不是...相当恐怖、

再说了这些后台程序都是在服务器上执行的

支持(0) 反对(0) 大芝麻 | 园豆:4 (初学一级) | 2013-11-21 21:42

@大芝麻: 就是要关服务器啊,这就是触发事件然后代码在服务器端执行的吧。

支持(0) 反对(0) Rookier | 园豆:652 (小虾三级) | 2013-11-21 21:53

@Rookier: 去启动一个进程可能是有些权限问题把。看看这个直接调用API的

http://developer.51cto.com/art/200907/139857.htm

支持(0) 反对(0) 大芝麻 | 园豆:4 (初学一级) | 2013-11-21 22:02

@大芝麻: 我知道会有权限问题,但是这样的问题权限应该是怎么更改才能实现的?

支持(0) 反对(0) Rookier | 园豆:652 (小虾三级) | 2013-11-21 22:32

@Rookier:你那个找不到的IIS ADMIN 这样试试

控制板面=》系统和安全=》管理工具(在倒数第二个)=》服务 

支持(0) 反对(0) 大芝麻 | 园豆:4 (初学一级) | 2013-11-21 22:46
0

IIS应用程序池,里的用户搞成LOcalSystem 看看

收获园豆:5
遗忘海岸 | 园豆:253 (菜鸟二级) | 2013-11-22 07:29
0

不要求安全性的话

直接添加user:everyone,把权限调成 完全控制

再试试吧

 

iis默认用户貌似就叫IIS_USER

收获园豆:5
sun8134 | 园豆:298 (菜鸟二级) | 2013-11-22 08:48
0

关注下

收获园豆:5
平常心队长 | 园豆:1113 (小虾三级) | 2013-11-22 09:13
0

我也遇到了类似的问题,最后解决方案是:将IIS里面你程序用到的程序池的高级设置中“启用32位应用程序”置为true,“加载用户配置文件”置为true。

进击の程序猿 | 园豆:206 (菜鸟二级) | 2017-11-16 17:12
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册