【问题标题】:Using a wcf client class file in View在 View 中使用 wcf 客户端类文件
【发布时间】:2013-11-13 11:42:30
【问题描述】:

我在 WCF 应用程序中返回一个类文件。从 wsdl(WCF 应用程序)的 svcutil.exe 生成的类文件 AuthenticationService.cs 保存在 App_Code 中并在我的项目中使用。

public ActionResult ViewName()
    {
  AuthenicationServiceClient client = new AuthenicationServiceClient("BasicHttpBinding_IAuthenicationService");
  IList<CategoryInfo> category = new List<CategoryInfo>();
  category = client.GetCategories(0, true);
  return View(category);
}

类 CategoryInfo 存在于 AuthenticationService.cs 中,我可以从控制器访问它,但不能在视图中使用它。当我在视图中使用相同的 CategoryInfo 时,它显示错误消息

In View
@model CategoryInfo

类分类信息

*错误:
'D:\ProjectName\Project Path\bin\ProjectName.dll' 和 C:\Windows\Microsoft.NET\Framework\v4.0.30309\Temporary ASP.NET Files\root\1664c01d_shadow\b956618\414288438\30335072\App_Code.j4b-_1mm.dll*

有什么办法可以解决这个问题吗?

【问题讨论】:

  • 我没有在目录中放置任何 dll。它自动生成的@CodeCaster
  • 我认为这个问题与您的问题非常相似。单击链接,验证问题,检查所有答案是否适用,然后然后您可以告诉我我链接到了错误的答案。目前,您似乎可以尝试其中的一些答案来解决您的问题。我确实认为@Darin 对 App_Code 目录有一点看法。

标签: c# asp.net asp.net-mvc wcf asp.net-mvc-4


【解决方案1】:

从svcutil.exe生成的类文件AuthenticationService.cs wsdl(WCF 应用程序)正在保存在 App_Code 中

这就是问题所在。 App_Code 文件夹不应由 Web 应用程序项目类型(这是 ASP.NET MVC 使用的)使用。它适用于网站。因此,将这些类移到其他地方并删除不应出现在预编译 Web 应用程序中的 App_Code 文件夹。请阅读此处了解 Web 应用程序项目类型和网站之间的区别:http://msdn.microsoft.com/en-us/library/dd547590(v=vs.110).aspx

您的代码不起作用的原因是,当您预编译项目时(因为它是一种 Web 应用程序类型),CategoryInfo 类会进入生成的程序集。除了 App_Code 文件夹中的所有内容的 ASP.NET 之外,在运行时会生成动态程序集并将它们放在输出中。所以基本上你最终会得到 2 个包含相同类的程序集。

【讨论】:

  • 放入模型并尝试,然后使用控制器。得到同样的错误
  • 清理 C:\Windows\Microsoft.NET\Framework\v4.0.30309\Temporary ASP.NET Files\root\1664c01d_shadow\b956618\414288438\30335072 文件夹,在该文件夹中可能留下了之前运行的一些程序集。
  • 是的,完成了。修复了这个问题,但是以后会在任何时候再次生成文件并造成同样的麻烦吗?
  • 我不知道。就我个人而言,我从不使用 Visual Studio 的内置向导来生成服务参考。我直接使用svcutil.exe 实用程序,然后将.cs 文件放入我的项目中。这样我就可以完全控制一切。
  • 我在上一条评论中提到的担忧已经开始。我现在再次收到相同的消息。所以每次我需要检查删除文件时手动查看特定路径。我希望我有一些解决方案,该文件没有生成两次。
【解决方案2】:

回复我自己的问题。

我使用 Web 服务以及项目文件中的相同 CategoryInfo 作为参考。通过删除引用并仅从 Web 服务客户端文件中获取 CategoryInfo 来删除命名冲突,我的问题得到了解决。

现在我不再收到错误了。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-04
    • 1970-01-01
    • 2011-07-08
    • 1970-01-01
    相关资源
    最近更新 更多