我正在开发一个非常简单的应用程序,我打算用它来解决我在几台机器上遇到的问题,但在我做到这一点之前,我遇到了一些问题,包括cpu架构差异和Oracle数据库库.
我有一个数据库服务器tnsnames.ora,坐在我的C:\oracle\11g\network\admin目录中.如果我收拾这台服务器,我会得到所需的响应.如果我使用Oracle.DataAccess.Client将我的C#程序编码为使用以下代码连接到此服务器,则它可以正常工作.
string connectionString = "Data Source=DSDSDS;User Id=UNUNUN;Password=PWPWPW;";
DataTable dataTable = new DataTable();
using (var connection = new OracleConnection(connectionString)) {
connection.Open();
using (var command = new OracleCommand()) {
command.Connection = connection;
command.CommandText = sql;
command.CommandType = CommandType.Text;
using (var oda = new OracleDataAdapter(command)) {
oda.Fill(dataTable);
}
}
}
Run Code Online (Sandbox Code Playgroud)
但是,Oracle.DataAccess依赖于它运行的系统的体系结构.我看到有另一个库Oracle.ManagedDataAccess,它独立于架构.当我使用这个库时,它不再能够连接到服务器.一个ORA-12545: Network Transport: Unable to resolve connect hostname被抛出.
为什么会这样?这两个库之间有什么不同,因为基于我到目前为止所读到的内容,这应该不是问题.
额外的信息:
C:\oracle\11g\BIN定义了.tnsnames.ora文件如果我将tnsnames.ora移动到与我的.exe文件相同的位置,它就可以了.为什么Oracle.DataAccess可以在C:\oracle\11g\network\admin目录中找到tnsnames.ora 但Oracle.ManagedAccess不能?
我不喜欢问这个问题,但我老老实实地一直在寻找一种方法来解决这个问题很长一段时间.
这是一个简单的问题.我已经使用NetBeans很长一段时间了,但最近转向Eclipse的原因有几点我不打算进入.无论如何,我发现javascript源格式化行为非常奇怪.
这是我自己格式化的javascript代码示例块:
function buildDatabase () {
db.transaction(function (tx) {
tx.executeSql('DROP TABLE IF EXISTS calendar');
tx.executeSql('CREATE TABLE IF NOT EXISTS calendar(id UNIQUE, summary, description, location, startdate, enddate)');
}, function (err) {
document.querySelector('#debugLog').innerHTML += '<p><code>' + err.message + '</code></p>';
});
}
Run Code Online (Sandbox Code Playgroud)
非常简单的东西.现在,如果我点击Ctrl+ Shift+ F来格式化它(因为坦率地说这个功能节省了很多时间)因为我无法理解它现在看起来像这样:
function buildDatabase() {
db
.transaction(
function(tx) {
tx.executeSql('DROP TABLE IF EXISTS calendar');
tx
.executeSql('CREATE TABLE IF NOT EXISTS calendar(id UNIQUE, summary, description, location, startdate, enddate)');
},
function(err) {
document.querySelector('#debugLog').innerHTML += '<p><code>'
+ err.message …Run Code Online (Sandbox Code Playgroud) 我一直有这个问题已经有一段时间了,虽然它不会对我的应用程序产生负面影响,但如果可以,我想解决它.我不确定如何描述问题.
基本上,我有一个Android PhoneGap 1.9项目,使用API 15(这也发生在API 10下),LogCat日志有来自QTAGUID的无情垃圾邮件,特别是来自我的应用程序.
08-04 14:31:30.092: I/qtaguid(15542): Failed write_ctrl(u 118) res=-1 errno=22
08-04 14:31:30.092: I/qtaguid(15542): Untagging socket 118 failed errno=-22
08-04 14:31:30.092: I/qtaguid(15542): Failed write_ctrl(u 123) res=-1 errno=22
08-04 14:31:30.092: I/qtaguid(15542): Untagging socket 123 failed errno=-22
08-04 14:31:36.338: I/qtaguid(15542): Failed write_ctrl(u 116) res=-1 errno=22
08-04 14:31:36.338: I/qtaguid(15542): Untagging socket 116 failed errno=-22
08-04 14:31:36.368: I/qtaguid(15542): Failed write_ctrl(t 116 43082816946176 1074812240) res=-1 errno=1
08-04 14:31:36.368: I/qtaguid(15542): Tagging socket 116 with tag 272f00000000(10031) for …Run Code Online (Sandbox Code Playgroud) 好的,我需要给一些背景知识.首先我使用的是带有PhoneGap 1.7的jquery-mobile.我编写了一个使用ServerSocket对象的非常简单的Java服务器.在Android手机上,我连接到服务器,这样服务器通过套接字发送数据.这部分正在运作.
我坚持的部分是我打算通过该套接字发送数据,这将需要在接收数据时更新jquery移动UI.
答:西蒙是一个巨大的帮助,我在他的帮助下想出来并遵循本教程
真正打击我的部分是在PhoneGap插件本身产生的线程.一旦我意识到,一切都到位了.但是,对于任何感兴趣的人都是代码.请记住,我从教程中学到了很多东西.我还包括我为测试这些概念而创建的非常简单的Java服务器.我想也许这将有助于将来的某个人.请记住,这基本上是一个概念证明.
我需要修改这个插件以满足我的实际需求:
Android Activity:import org.apache.cordova.DroidGap;
import android.os.Bundle;
public class ISSAndroidActivity extends DroidGap {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
super.loadUrl("file:///android_asset/www/index.html");
}
}
Run Code Online (Sandbox Code Playgroud)
PhoneGap插件:
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.net.InetSocketAddress;
import java.net.Socket;
import java.net.SocketAddress;
import java.net.SocketException;
import org.apache.cordova.api.*;
import org.apache.cordova.api.PluginResult;
import org.apache.cordova.api.PluginResult.Status;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import android.util.Log;
public class InvokeJavaScriptPlugin extends Plugin {
public static String PLUGIN_TAG = "InvokeJavaScriptPlugin";
public static String PROCESS_DATA_ACTION …Run Code Online (Sandbox Code Playgroud) 我正在尝试从外部提供文件,wwwroot但也处理目录可能尚不存在的设置情况.例如,如果我构建了一个依赖于此目录的站点,但是用户没有按照安装说明进行操作并首先创建该目录.
为了争论,我们假装我想要一个简单的网站,其中有一个页面可以读取该目录的内容并显示一些文件.此页面还可能允许您从/Documents子目录下载文件.示例目录将是C:\Example\Documents.
由于这是一个aspnet核心mvc项目,我将UseStaticFiles()在Startup.cs中使用Configure方法
public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory) {
if (env.IsDevelopment()) {
app.UseDeveloperExceptionPage();
app.UseBrowserLink();
} else {
app.UseExceptionHandler("/Home/Error");
}
app.UseStaticFiles();
// If C:/Example/Documents does not exist, an exception is thrown
// ArgumentException: The directory name C:\Example\Documents\ is invalid
// What is worse, the users is not directed to /Home/Error due to the application failing to properly start.
app.UseStaticFiles(new StaticFileOptions() {
FileProvider = new PhysicalFileProvider("C:/Example/Documents"),
RequestPath = new PathString("/Documents"),
});
app.UseMvc(routes …Run Code Online (Sandbox Code Playgroud) 我最近完成了将 WPF 项目转换为更精简的新 csproj 格式。
但是,我还剩下一个缺失的部分,probing为程序集添加了一条路径,该路径曾经存在于旧app.config文件中。由于缺少这个,我的应用程序找不到所需的 dll。
我进行此设置的方式是使用 Post-build 事件清除项目并将其移动到 bin 文件夹:
SET folder=bin
rmdir "$(TargetDir)%folder%" /s /q
mkdir "$(TargetDir)%folder%"
move "$(TargetDir)*.dll" "$(TargetDir)%folder%\"
Run Code Online (Sandbox Code Playgroud)
我尝试向 .csproj 文件添加一些条目,但无济于事。我相信这更适合编译应用程序:
SET folder=bin
rmdir "$(TargetDir)%folder%" /s /q
mkdir "$(TargetDir)%folder%"
move "$(TargetDir)*.dll" "$(TargetDir)%folder%\"
Run Code Online (Sandbox Code Playgroud)
我想我的主要问题是,我还应该有一个 app.config,还是有更好的 .csproj 方法可用?
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.7.2"/>
</startup>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<probing privatePath="bin"/>
</assemblyBinding>
</runtime>
</configuration>
Run Code Online (Sandbox Code Playgroud)
如果我包含它,我的应用程序将工作,但我想知道我是否可以简化它,或者以更好的方式来做这件事。
我正在尝试创建一个关于 ASP.NET Core 路由引擎如何工作的可靠示例,结果让我感到惊讶。
此示例背后的前提是点击控制器索引页面,然后使用 AJAX 请求加载数据。
我用 MVC 创建了一个 ASP.Net Core 应用程序。然后我添加了以下控制器:
namespace WebApplication2.Controllers {
using Microsoft.AspNetCore.Mvc;
public class SearchController : Controller {
public IActionResult Index() {
return View();
}
[HttpGet("{company}")]
public IActionResult Get(string company) {
return Ok($"company: {company}");
}
[HttpGet("{country}/{program}")]
public IActionResult Get(string country, string program) {
return Ok($"country: {country} program: {program}");
}
}
}
Run Code Online (Sandbox Code Playgroud)
我还创建了一个简单的视图,与带有“搜索页面”字样的索引一起使用,以便您可以看到它被调用。
问题是由此创建的路由没有意义。
以公司:“ABC”,国家:“加拿大”和程序:“管道”为例:
/搜索/索引
产生:“搜索页面”
/搜索/美国广播公司
制作“公司:ABC”
/搜索/加拿大/水暖
产生:“国家:加拿大计划:管道”
然而,它根本不是这样工作的。相反,这些是结果:
产生:“国家:搜索程序:索引”
产生:“国家:搜索程序:ABC”
产生:404 未找到
很明显,Index …
我继承了一个Xamarin项目(不是Xamarin.Forms),现在它有三个主要组件.
iOS项目,Android项目,最后是共享项目(不是PCL而不是.Net标准项目).
尽管是共享项目,但应用程序会读取每个项目的资源文件夹中包含的json文件.该文件是重复的.我觉得这个文件应该在共享项目中
澄清一下,这是结构:
没有资产
资源/ test.json
资产/ test.json
我相信该test.json文件应该作为共享项目中的一个文件存在.我的第一步是做这个动作,我将文件更改Build Action=Content为适用于iOS项目的文件.但似乎Android项目没有得到这个文件.我在编译和存档的.apk文件中的任何地方都找不到它.
有什么我可以做的,或者我是否需要接受这个设计缺陷并构建.Net标准库或PCL?如果是这样,你究竟如何为非Xamarin.Forms项目制作.Net标准版或PCL版.
c# ×4
cordova ×2
javascript ×2
android ×1
asp.net-core ×1
csproj ×1
eclipse ×1
java ×1
jquery ×1
msbuild ×1
oracle ×1
tnsnames ×1
xamarin ×1
xamarin.ios ×1