假设我在以下地址有一个asmx Web服务: http://localhost/BudgetWeb/Service.asmx
此Web服务具有带以下签名的Web方法:
string GetValue(string key)
Run Code Online (Sandbox Code Playgroud)
此GetValue方法返回如下字符串:
<?xml version=\"1.0\" encoding=\"utf-8\" ?><value>250.00</value>
Run Code Online (Sandbox Code Playgroud)
如果我想这样做怎么办:
XDocument doc = XDocument.Load("http://localhost/BudgetWeb/Service.asmx?op=GetValue&key=key1")
Run Code Online (Sandbox Code Playgroud)
这不起作用,我很确定XDocument.Load实际上并没有在服务器上调用Web方法.我认为它希望uri指向一个可以加载的文件.要调用Web方法,我想我必须有一个Web代理类,并且必须使用它来调用string GetValue(string key),然后我可以使用从Web代理类返回的值传递给XDocument.Load方法.
我的理解是否正确,或者XDocument.Load是否有办法在服务器上实际调用Web方法?
这是前一个问题的一个延续.
现在我正在尝试调用我在ASP.NET MVC应用程序中定义的支持AJAX的Web服务(即MovieService.svc).但是我的getMoviesjavascript函数永远不会调用该服务.
如果我在非ASP.NET MVC应用程序中尝试,这种调用AJAX Web服务的技术工作正常,所以它让我想知道ASP MVC路由在尝试进行AJAX Web服务调用时是否会以某种方式干扰某些事情.
你知道为什么我的网络服务没有被调用吗?代码如下.
<script src="<%= ResolveClientUrl("~/scripts/jquery-1.4.2.min.js") %>" type="text/javascript"></script>
<script src="<%= ResolveClientUrl("~/scripts/grid.locale-en.js") %>" type="text/javascript"></script>
<script src="<%= ResolveClientUrl("~/scripts/jquery-ui-1.8.1.custom.min.js") %>"
type="text/javascript"></script>
<script src="<%= ResolveClientUrl("~/scripts/jquery.jqGrid.min.js") %>" type="text/javascript"></script>
<script type="text/javascript">
var lastsel2;
function successFunction(jsondata) {
debugger
var thegrid = jQuery("#editgrid");
for (var i = 0; i < jsondata.d.length; i++) {
thegrid.addRowData(i + 1, jsondata.d[i]);
}
}
function getMovies() {
debugger
// ***** the MovieService#GetMovies method never gets called
$.ajax({
url: 'MovieService.svc/GetMovies',
data: "{}", …Run Code Online (Sandbox Code Playgroud) 如果我module在VB.Net类库中,它的可见性是否仅限于程序集?我正在寻找的是类的VB.Net等价物C# internal static.有谁知道相同的?
有人知道是否可以将下面的catch块中的代码编写为单个语句?我无法想出办法,如果有的话,我只是很好奇.
重要信息:必须保留堆栈跟踪.
catch (Exception e)
{
if (e is MyCustomException)
{
// throw original exception
throw;
}
// create custom exception
MyCustomException e2 =
new MyCustomException(
"An error occurred performing the calculation.", e);
throw e2;
}
Run Code Online (Sandbox Code Playgroud) 考虑这两段代码(您可以假设execeptionObj它是类型Object,但我们知道它是一个实例Throwable):
1)
logger.log(Level.ERROR, (Throwable) exceptionObj,
((Throwable) exceptionObj).getMessage());
Run Code Online (Sandbox Code Playgroud)
2)
Throwable t = new Throwable((Throwable)exceptionObj);
logger.log(Level.ERROR, t, t.getMessage());
Run Code Online (Sandbox Code Playgroud)
在我正在进行的项目的代码审查期间,一位评论者说第一种方式不如第二种方式有效,因为它涉及2次演员.我只是想知道你的想法.似乎创建一个新实例也会涉及一些开销.
我对JBOSS有点困惑,并在不同的JDK下运行它.例如,假设我正在运行JBOSS 5.1,在启动它之前,我将JAVA_HOME设置为指向JDK5.我们还假设我的Java EE应用程序是在JDK6下编译的.如果我将Java EE应用程序(在JDK6下编译)部署到JBOSS,当我尝试查找我的EJB时,会出现以下错误:
javax.naming.NameNotFoundException: tc_test_project not bound
Run Code Online (Sandbox Code Playgroud)
但是,如果我在JDK5下重新编译我的代码并重新部署它,它可以正常工作并且能够查找EJB.
同样,我可以将JAVA_HOME设置为JDK6并启动JBOSS,我的代码(在JDK6下编译)将在该场景下运行正常(它能够找到EBJ等).
所以你的Java EE应用程序似乎需要在JBOSS服务器运行的同一个JAVA_HOME下编译,或者我误解了什么?只想得到确认,谢谢.
假设我有这样的类声明:
public abstract class IdentifiableEntity {
public boolean validate() {
return true;
}
}
public class PreferenceCategory extends IdentifiableEntity {
public boolean validate() {
return true;
}
}
Run Code Online (Sandbox Code Playgroud)
现在,假设我创建了PreferenceCategory变量,我想调用IdentifiableEntity.validate()方法,而不是 PreferenceCategory.validate()方法.
我原本以为我可以使用强制转换(见下文),但它仍然调用重写的方法:
PreferenceCategory cat = new PreferenceCategory();
// this calls PreferenceCategory.validate(), not what I want
((IdentifiableEntity)cat).validate();
Run Code Online (Sandbox Code Playgroud)
有什么办法吗?
当我尝试添加@Html.HiddenFor(@Model.ID)到我的代码时,访问页面时出现以下错误:
编译器错误消息:CS0411:无法从用法推断出方法'System.Web.Mvc.Html.InputExtensions.HiddenFor(System.Web.Mvc.HtmlHelper,System.Linq.Expressions.Expression>)'的类型参数.尝试显式指定类型参数.
我尝试阅读MSDN,但文档很糟糕(他们没有在此方法的文档中提供单个代码示例.
这是我的观点:
@model CustomerService.Entity.Order
@using CustomerService.Entity
@{
ViewBag.Title = "OrderDetails";
}
<h2>
OrderDetails</h2>
@using (Html.BeginForm("HandleSubmit", "Home", FormMethod.Post))
{
<table border="1">
<tr>
<td>
<b>Order #</b>
</td>
<td>
@Model.ID
</td>
</tr>
<tr>
<td>
<b>Description</b>
</td>
<td>
@Model.Description
</td>
</tr>
<tr>
<td>
<b>Salesperson Name</b>
</td>
<td>
@Model.SalespersonName
</td>
</tr>
</table>
<h3>
Line Items</h3>
<input id="btnAddLineItem" type="submit" name="AddLineItem" value="AddLineItem" />
@Html.HiddenFor(@Model.ID)
<table border="1">
<tr>
<td>
<b>Line Item ID</b>
</td>
<td>
<b>Description</b>
</td>
</tr>
@for (int i = 0; …Run Code Online (Sandbox Code Playgroud) 我需要以int32的形式从用户那里获取供应商ID,它们通常看起来像这样.0x0EB8我可以把它写成代码
int32 vid = 0x0EB8;
Run Code Online (Sandbox Code Playgroud)
这很好用.但我需要以字符串的形式从用户那里获取它.当我调用System.Convert.ToInt32("0x0EB8")时,我得到一个类型转换异常.
这是我的一些测试代码,它给了我一个例外.
Int32 blah;
Console.WriteLine("Please enter the Vendor ID");
string blahString = Console.ReadLine();
blah = Convert.ToInt32(blahString);
Run Code Online (Sandbox Code Playgroud)
有人知道这样做的好方法吗?