visual studio 2005/8的内置网页服务器 对非ascii码的字符的文件名支持有BUG

本文记录了作者在使用回调技术过程中遇到的问题及解决方案。由于文件名中含有非ASCII字符导致回调失败,通过更换内置服务器解决了该问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 前些天,在练习使用 回调技术时,  发现回调总是发不回服务器上,仔仔细细排查了N遍,也没有发现错误之处,无奈之下,

大刀阔斧般的砍掉代码, 几乎减到了最简单,仍然还是不行,精神尽乎崩溃。

   最后,只有一招,从网上下了一段代码, 运行,一切OK, 只好相互替换,最后竟然把全部代码都换了过来,可是,,只要是在我的文件中,就是不行, 天啊,,,,,,,,,,,,,,,,,,,,,,,,,

    在几乎绝望的时候,发现两个页面文件名不一样,原来不行的那个文件中有中文,最后交换了文件名,终于查出原因!!!

             不支持中文文件名!!!!!!!!!!

 

      经过测试,发现只要是用了非ascii码的字符就会导致回调不成功

  

       后来,把网站架在了 IIS7.0上,发现却没有这种问题了,可见问题出在了:

 

     visual studio 2005/8的内置网页服务器 对含有非ascii码的字符的文件名支持不好!!!

 

 

               

 

           

 

 

 

附上完整代码(页面含中文名/不含时分别测试):

Test.aspx 页面部份:
  1. <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Test.aspx.cs" Inherits="Test" %>
  2. <!DOCTYPE   html   PUBLIC   "-//W3C//DTD   XHTML   1.0   Transitional//EN "   "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd ">
  3. <html xmlns="http://www.w3.org/1999/xhtml">
  4. <head id="Head1" runat="server">
  5.     <title>无标题页 </title>
  6. </head>
  7. <script type="text/javascript"
  8.         
  9.          //主要回调的方法 
  10.         function   GetMessageFromServer()   
  11.         { 
  12.             var   arg= document.getElementById("TextBox1").value;     //此处可以自己定义上传的参数 
  13.             var   context= " "
  14.             
  15.             <%-- 绑定的语法 --%>
  16.             <%=   ClientScript.GetCallbackEventReference(this,   "arg",   "JSCallback",   "context")%> ; 
  17.         
  18.         } 
  19.         
  20.         //数据回到客户端时,调用的方法
  21.         function   JSCallback(result,   context) 
  22.         { 
  23.                 //   当回调结束后将执行这里的方法,把从服务器端获取的值进行客户端操作 
  24.                 document.forms[0].TextBox1.value   =   result; 
  25.         } 
  26. </script>
  27. <body>
  28.     <form id="form1" runat="server">
  29.     <div>
  30.         <input type="button" id="Button1" value="回调演示" onclick="GetMessageFromServer()" />
  31.         <br />
  32.         <asp:TextBox ID="TextBox1" runat="server"> </asp:TextBox>
  33.     </div>
  34.     </form>
  35. </body>
  36. </html>

Test.axpx.cs的部份:

 

  1. using System;
  2. using System.Collections;
  3. using System.Configuration;
  4. using System.Data;
  5. using System.Web;
  6. using System.Web.Security;
  7. using System.Web.UI;
  8. public partial class Test : System.Web.UI.Page, ICallbackEventHandler
  9. {
  10.    string callbackResult;
  11.     protected void Page_Load(object sender, EventArgs e)
  12.     {
  13.     }
  14.     //回传到服务器上时调用的方法
  15.     public void RaiseCallbackEvent(string eventArgument)
  16.     {
  17.         //   服务器端操作 
  18.         callbackResult = "处理过的: " + eventArgument;
  19.     }
  20.     //发送到客户端去时调用的方法 
  21.     public string GetCallbackResult()
  22.     {
  23.         return callbackResult;
  24.     }
  25.    
  26. }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值